leetcode之字符串压缩

【leetcode之字符串压缩】本文主要记录一下leetcode之字符串压缩
leetcode之字符串压缩文章插图
题目字符串压缩 。 利用字符重复出现的次数 , 编写一种方法 , 实现基本的字符串压缩功能 。 比如 , 字符串aabcccccaaa会变为a2b1c5a3 。 若“压缩”后的字符串没有变短 , 则返回原先的字符串 。 你可以假设字符串中只包含大小写英文字母(a至z) 。 示例1: 输入:"aabcccccaaa" 输出:"a2b1c5a3"示例2: 输入:"abbccd" 输出:"abbccd" 解释:"abbccd"压缩后为"a1b2c2d1" , 比原字符串长度更长 。 提示:字符串长度在[0, 50000]范围内 。 来源:力扣(LeetCode)链接:著作权归领扣网络所有 。 商业转载请联系官方授权 , 非商业转载请注明出处 。 题解class Solution {public String compressString(String S) {if (S == null || S.length() == 0) {return S;}char pre = S.charAt(0);int count = 1;StringBuilder result = new StringBuilder();for (int i=1; i< S.length(); i++) {char cur = S.charAt(i);if (cur == pre) {count++;} else {result.append(pre).append(count);pre = cur;count = 1;}}result.append(pre).append(count);if (result.length() >= S.length()) {return S;}return result.toString();}}小结这里维护前一个字符及其count的字段 , 之后从第二个字符开始遍历 , 判断与前一个字符是否相等 , 相等则累加 , 不相等则将该字符的压缩添加到结果中 , 最后再将最后一个字符的压缩添加到结果中 。
doc

  • 字符串压缩