字符串压缩
想到的是判断字符出现的次数,然后把字符加入StringBuilder里,次数也加入StringBuilder里
力扣代码
class Solution {
public String compressString(String S) {
if(S.length()==0) return S;//先判断字符串是否为空串
StringBuilder ss=new StringBuilder();//用来加上字符和字符的次数,最后输出
int geshu=1;//记录字符出现的次数,最少1次开始
char nn=S.charAt(0);//用来记录出现的字符,先记录第一个字符
for(int i=1;i<S.length();++i){//从第二个字符与第一个字符开始比
if(nn==S.charAt(i)){//通过i的变化来记录nn之后的字符是否与nn一样,一样则个数+1
geshu++;
}else{
ss.append(nn);//不一样则把字符加入SringBuilder
ss.append(geshu);//然后加入字符出现的次数
geshu=1;//重新记录下一个字符出现的次数,最低1次
nn=S.charAt(i);//这个是当前不与前一个不同的字符,
}
}
ss.append(nn);//当i等于i<S.length()时会跳出循环,跳出后还要把当前字符加入
ss.append(geshu);//还有个数也加入
return ss.length() >=S.length()?S:ss.toString();//最后判断长度是否大于原字符串,大于就输出ss
}
}