题目描述:
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/compress-string-lcci
解:
- 思路:
用一个可变字符串接收压缩后的结果。
扫描当前位置的后面字母,如果相同就计数,直到碰到不一样的字母停止,然后从停下来的位置开始继续跑。 - Code:
public static String compressString(String S) {
if(S.length()==0){
return "";
}
StringBuilder res =new StringBuilder();;
int count;
int i=1;
char temp = S.charAt(0);
count = 1;
for ( i = 1; i <S.length() ; i++) {
if(S.charAt(i)==temp){
count++;
}else{
res.append(temp);
res.append(count);
count=1;
temp=S.charAt(i);
}
}
//最后必须再加一次,因为后面相等了,只加了count值,但是没有添加进res
res.append(temp);
res.append(count);
System.out.println(res);
if(res.length()>=S.length()){
return S;
}else{
String s = ""+res;
return s;
}
}```
---
晚安啦!