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