Leetcode--字符串压缩
字符串壓縮。利用字符重復出現的次數,編寫一種方法,實現基本的字符串壓縮功能。比如,字符串aabcccccaaa會變為a2b1c5a3。若“壓縮”后的字符串沒有變短,則返回原先的字符串。你可以假設字符串中只包含大小寫英文字母(a至z)。
示例1:
?輸入:"aabcccccaaa"
?輸出:"a2b1c5a3"
示例2:
?輸入:"abbccd"
?輸出:"abbccd"
?解釋:"abbccd"壓縮后為"a1b2c2d1",比原字符串長度更長。
思路:
有一個小坑,數量超過10的x與S比較的位置可能得多移動幾位
提示:
字符串長度在[0, 50000]范圍內。
代碼:
class?Solution?{
????public?String?compressString(String?S)?{
???????if(S.length()==0){
????????????????return?S;
????????????}
????????????StringBuilder?x?=?new?StringBuilder();
????????????x.append(S.charAt(0));
????????????int?i=1,j=0,count=1;
????????????while(i<S.length())
????????????{
????????????????if(x.charAt(j)!=S.charAt(i)){
????????????????????x.append(count);
????????????????????while(count!=0)//需要注意,不是每次添加數字都是j++,有的數量超過10,j就不止移動一位,可能好幾位
????????????????????{
????????????????????????count/=10;
????????????????????????j++;
????????????????????}
????????????????????count=1;
????????????????????x.append(S.charAt(i));
????????????????????j++;
????????????????}else{
????????????????????count++;
????????????????}
????????????????i++;
????????????}
????????????x.append(count);
???????????if(x.length()>=S.length())
????????????{
????????????????return?S;
????????????}
????????????return?x.toString();
????}
}
總結
以上是生活随笔為你收集整理的Leetcode--字符串压缩的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: getchar(),putchar()用
- 下一篇: 计算机操作系统——死锁(产生的必要条件与