题解 | #基本字符串压缩#

基本字符串压缩

http://www.nowcoder.com/practice/21f3a84300c94db092e0b5a7bf2d0ad1

双指针i,j

i每次找到新的字符,j从i开始向右计数:
(1)如果i,j字符指向的相同,则j向右依次遍历,统计个数;
(2)如果不同,则j所在的位置为新的i位置,j继续从这个位置开始。
注意:结尾时的字符要特别考虑。

import java.util.*;
public class Zipper {
    public String zipString(String iniString) {
        // write code here
        if(iniString == null || iniString.length() == 0){
            return iniString;
        }
        StringBuilder sb = new StringBuilder();
        int i = 0 , j = 1;
        int count = 1;
        while(j < iniString.length()){
            if(iniString.charAt(j) == iniString.charAt(i) ){ //存在重复的字符
                count ++;
                j ++;
                //重复字符直到最后一个位置,由于没有下一个了,所以这里就要保存
                if(j == iniString.length()){    
                    sb.append(iniString.charAt(i));
                    sb.append(count);                    
                }                
            }else{    //不存在重复的字符
                sb.append(iniString.charAt(i));
                sb.append(count);
                i = j ;
                j = i + 1;
                count = 1;
            }
        }
        return  sb.length() > iniString.length() ? iniString :  sb.toString();
    }
}
全部评论

相关推荐

头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
2 1 评论
分享
牛客网
牛客企业服务