题解 | #基本字符串压缩#
基本字符串压缩
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();
}
}
腾讯公司福利 1139人发布