问题描述:
将给定的字符串,按照规格压缩,输出压缩后的字符串。压缩规格为:相同字符连续,则压缩为“字符+数字个数”,如”aaaa”压缩为”a4”
注:
1. 仅是单个字符连续才压缩,如babababa则不能压缩
2. 待压缩字符串中不包含数字和转义符
要求实现方法:
public static String compressStr(String str)
str:待压缩的字符串
返回值:压缩后的字符串
示例:
输入:SrcStr =”aaacccddef”
输出:DstStr=”a3c3d2ef”
public static String compressStr(String str){
StringBuilder sb = new StringBuilder();
//连续字符的个数
int sum = 1;
//取第一个字符
char c1 = str.charAt(0);
for(int i=1;i<str.length();i++){
//循环取字符
char c2 = str.charAt(i);
//把前一个字符和当前字符比较
if(c1==c2){
//相同的字符个数加1
sum++;
continue;
}
//拼接字符
if(sum>1){
sb.append(c1).append(sum);
}else{
sb.append(c1);
}
//当前字符变为前一个字符
c1 = c2;
//个数归1
sum = 1;
}
//System.out.println(sum);
//加上最后一个字符及个数
if(sum>1){
sb.append(c1).append(sum);
}else{
sb.append(c1);
}
return sb.toString();
}