迭代压缩
public class Solution { public String compressString(String S) { // 如果是空串,直接返回 if (S.length() == 0) return S; // 将字符串拆分为字符数组 char[] charArray = S.toCharArray(); // 用于记录连续重复字符个数 int charCount = 1; // 用于记录上一个字符,初使化为第一个字符,遍历的时候从第二个字符开始 char preChar = S.charAt(0); // 用于记录拼接结果 StringBuilder stringBuilder = new StringBuilder(); // 从第二个字符开始遍历 for (int i = 1; i < charArray.length; i++) { // 如果当前字符与上一个字符相同,count ++; if (preChar == charArray[i]) { charCount ++; } else { // 如果当前字符与上一个字符不相同,则进行拼接 stringBuilder.append(preChar).append(charCount); // count 重置为 1 charCount = 1; } // 每次遍历的最后都要将 preChar 更新为当前字符 preChar = charArray[i]; } // 注意不要忘了拼接最后一位 stringBuilder.append(preChar).append(charCount); // 判断拼接后长度与原字符长度,返回长度小的 return stringBuilder.length() < S.length() ? stringBuilder.toString() : S; }}