1、用java语言编写,字符串压缩,输入字符串从a-z或A-Z,若出现两次相同的字符就用字符串加数字表示。
如:AABBCCDD,输出为:A2B2C2D2,实现压缩。

解决方案 »

  1.   

    这个应该很容易啊!用for循环不就OK了
      

  2.   


    //只针对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();
    }
      

  3.   

     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);
    }