求一个字符串压缩的代码。

例:输入iteye,输出e2i1t1y1
zhongguo --> g2h1n1o2u1z1

我有一个高效的
[code="java"]package com.algorithm.compress;

import java.util.Scanner;

public class CountTimeOfChar {

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    System.out.println("请输入一串字母:");

    String input = sc.next();

    int[] count = new int[26];

    char[] chars = input.toCharArray();

    //(字母 & 31 ) 可以算出他是第几个字母

    for(int i = 0, len = chars.length; i < len; count[(chars[i ++] & 31) - 1] ++);      //计算每种字符在输入的字符串中出现的次数

    for(int j = 0, len = count.length; j < len; j ++) {

        if(count[j] != 0) {

            System.out.print((char) ('a' + j));

            System.out.print(count[j]);

        }

    }

    System.out.println();

}

}[/code]

你这个是统计字符数量
[url]http://download.csdn.net/download/hexiang221/1994808[/url]
[url]http://www.docin.com/p-492662254.html[/url]

这是字符串压缩吗?明显是字符统计啊

问非所问,答非所答 :D

这个只是简单的统计吧

[code="java"]static class Letter implements Comparable {
char ch;
int count;

    public Letter(char ch, int count) {
        super();
        this.ch = ch;
        this.count = count;
    }

    public void increase() {
        count++;
    }

    public String toString() {
        return ch + "" + count;
    }

    public int compareTo(Letter o) {
        if (this.count > o.count)
            return -1;
        else if (this.count < o.count)
            return 1;
        if (this.ch > o.ch)
            return 1;
        else if (this.ch < o.ch)
            return -1;
        return 0;
    }
}

public static String statistic(String s) {
    HashMap<Character, Integer> count = new HashMap<Character, Integer>();
    int n = s.length();
    for (int i = 0; i < n; i++) {
        Character ch = s.charAt(i);
        Integer c = count.get(ch);
        if (c == null) {
            count.put(ch, 1);
        } else {
            count.put(ch, c + 1);
        }
    }
    int m=count.size();
    Letter[] arr=new Letter[m];
    int index=0;
    for(Entry<Character, Integer> e:count.entrySet()){
        arr[index++]=new Letter(e.getKey(), e.getValue());
    }
    Arrays.sort(arr);
    StringBuilder sb = new StringBuilder(n * 2);
    for (Letter letter:arr) {
        sb.append(letter);
    }
    return sb.toString();
}[/code]

如果这是压缩算法,该如何解压??
不能解压还原,还有神马意义呢?