1.题目要求
输入:aaabbce
输出: 3a2bce
2.实现思路
step1:定义一个StringBuffer用来拼接后来新生成的字符串。
step2:定义开始指针start=0,定义第二个指针j=start+1,遍历字符串中的每一项当指针当前指向的字符和它后面的元素有相同的时候sum++,sum初始为1,判断sum值
- 当sum值>2时,输出sum值
- 输出此时start指针指向的字符值
step3:将start值重新赋值为start+sum
3.代码实现
public class CompressString {
public static String compressString(String s){
if(s==null||s.length()==0)
return "";
char[] chars=s.toCharArray();
StringBuffer sb=new StringBuffer();
int start=0;
while(start<chars.length){
int sum=1;
for(int j=start+1;j<chars.length;j++){
if(chars[start]==chars[j]){
sum++;
}
}
if(sum>1){
sb.append(sum);
}
sb.append(chars[start]);
start=start+sum;
}
return sb.toString();
}
@Test
public void test1(){
String s="aaabbce";
String result=compressString(s);
System.out.println(result);
}
@Test
public void test2(){
String s="aaaaaaaa";
String result=compressString(s);
System.out.println(result);
}
}