当前位置:编程学习 > JAVA >>

笔试题目

1、用java语言编写,字符串压缩,输入字符串从a-z或A-Z,若出现两次相同的字符就用字符串加数字表示。
如:AABBCCDD,输出为:A2B2C2D2,实现压缩。
--------------------编程问答-------------------- 求答案啊。。。 --------------------编程问答-------------------- 这个应该很容易啊!用for循环不就OK了 --------------------编程问答--------------------

//只针对a-z,A-Z
static String compressString(String str) {
char[] arr = str.toCharArray();
TreeMap<Character, Integer> map = new TreeMap<Character, Integer>();
for (char c : arr) {
if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
if(map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
} else {
System.err.println("input error");
return null;
}
}
StringBuffer sb = new StringBuffer();
for (Entry<Character, Integer> entry : map.entrySet()) {
sb.append(entry.getKey());
if(entry.getValue() > 1) {
sb.append(entry.getValue());
}
}
return sb.toString();
}
--------------------编程问答-------------------- 好的,谢谢!
--------------------编程问答--------------------  
public static void main(String[] args) {
String s = "ABBBBBBCCDD";
StringBuffer sb = new StringBuffer();
int i = 0, size = s.length();
int loop = 1;
while (i < size) {
char c = s.charAt(i);
sb.append(c);
i++;
while (i < size && s.charAt(i) == c) {
i++;
loop++;
}
if(loop!=1){
sb.append(String.valueOf(loop));
loop = 1;
}
}
System.out.println(sb);
}
--------------------编程问答-------------------- 用map来做就Ok了
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,