成语大全网 - 成语解释 - 用java如何实现压缩字符串?

用java如何实现压缩字符串?

package javase1.day02;

/**

* 1)一种字符串压缩算法

* str ="aaaabbccccddeaaa"

* 压缩为:"4a2b4c2d1e3a"

* 原理实现:

* str = "aaaabbccccddeaaa"

*

* c = str.charAt(i)//c是每个字符

* 1) 初始化

* StringBuilder buf = new StringBuilder();

* int count = 0;代表相同的字符个数

* char ch = str.charAt(0);代表正在统计的相同字符'a'

* 2) 从i=1开始迭代每个字符

* c = str.charAt(i);//c是每个当前字符

* 3) 检查当前字符c与被统计ch是否一致

* 如果一致 count++

* 否则(不一致)

* 向缓冲区buf增加count+ch

* count=0,ch=c;

* 3)没有下个字符就结束

* 4)还有字符串吗?回到2)

*

* 2)实现还原算法

* str = "4a2b4c2d1e3a";

* i

*/

public class Demo5 {

public static void main(String[] args) {

String s = comp("aaaawwwwe");

System.out.println(s);

// System.out.println(decomp(s));

}

public static String comp(String str){

int i = 1;

StringBuilder buf = new StringBuilder();

int count = 1;

char ch = str.charAt(0);

for(;;){

char c = i==str.length() ? '\10':str.charAt(i);

if(c==ch){

count++;

}else{

if(count == 1)

buf.append(ch);

else

buf.append(count).append(ch);

count=1;

ch = c;

}

i++;

if(i==str.length()+1){

break;

}

}

return buf.toString();

}

}