字符串压缩
利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
算法思路
新建一个字符串,设置一个指针,一个计数器,指针从0开始,与前一个字母相同的情况下,计数器加一,不相同就把字符和数字都拼接到新字符串后。知道指针指向字符串最后一个字符,再将此时的字符和数组拼接到新字符串后。
代码实现
public class Zipper {
public static String zipString(String iniString) {
// write code here
String str="";
char ch = iniString.charAt(0);
int count = 1;
for (int i = 1; i < iniString.length(); i++){
if (iniString.charAt(i) == ch){ //相等计数器加一
count++;
}
else{ //不相等将字符和数字都添加到新字符串后,并跟新字符。
str+=ch;
str+= count;
count = 1;
ch = iniString.charAt(i);
}
}
//循环结束后,还有一组字符和数字没添加
str+=ch;
str += count;
//比较新老数组长度
return str.length() < iniString.length() ? str : iniString;
}
}
}