Leetcode 2020春招必刷61题-11

Leetcode 2020春招必刷61题-11

题目:字符串压缩

字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。

示例1:
输入:"aabcccccaaa"
输出:"a2b1c5a3"

示例2:
输入:"abbccd"
输出:"abbccd"
解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。

提示:
字符串长度在[0, 50000]范围内。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/compress-string-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

最开始没有认真审题,以为只是按照每个字符的出现顺序统计字符出现的个数,美滋滋的用了LinkedHashMap,所以还是要仔细审题~~~
说正经的,明白题意后,我最直观的想法是利用一个StringBuffer和一个计数器count来按照顺序进行字符char个数的统计,并写进StringBuffer里,也就是StringBuffer = char + count +...char + count的形式。注意当相邻的两个字符不同时,count要清零。最后再将StringBuffer转化为String,并根据两个字符串长度的比较来确定输出。

代码:

class Solution {
    public String compressString(String S) {
        if(S.equals("")) return S;
        int count = 1;
        StringBuffer str = new StringBuffer();
        str.append(S.charAt(0));
        for(int i=1; i= S.length()) return S;
        else return ans;
    }
}

你可能感兴趣的:(Leetcode 2020春招必刷61题-11)