领扣LintCode算法问题答案-213. 字符串压缩

领扣LintCode算法问题答案-213. 字符串压缩

目录

  • 213. 字符串压缩
  • 鸣谢

213. 字符串压缩

设计一种方法,通过给重复字符计数来进行基本的字符串压缩。

例如,字符串 aabcccccaaa 可压缩为 a2b1c5a3 。而如果压缩后的字符数不小于原始的字符数,则返回原始的字符串。

可以假设字符串仅包括 a-z 的字母。

样例 1:

输入:str = “aabcccccaaa”
输出:“a2b1c5a3”

样例 2:

输入:str = “aabbcc”
输出:“aabbcc”

public class Solution {
     
    /**
     * @param originalString: a string
     * @return: a compressed string
     */
    public String compress(String originalString) {
     
        // write your code here
        if (originalString == null
            || originalString.length() == 0) {
     
            return originalString;
        }
        StringBuilder sb = new StringBuilder();

        char lastC = 0;
        int count = 0;
        for (char c : originalString.toCharArray()) {
     
            if (lastC == 0) {
     
                lastC = c;
                count = 1;
            } else {
     
                if (c == lastC) {
     
                    count++;
                } else {
     
                    sb.append(lastC);
                    sb.append(count);
                    lastC = c;
                    count = 1;
                }
            }
        }

        if (lastC != 0) {
     
            sb.append(lastC);
            sb.append(count);
        }

        if (sb.length() >= originalString.length()) {
     
            return originalString;
        } else {
     
            return sb.toString();
        }
    }
}

原题链接点这里

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

你可能感兴趣的:(算法,算法)