0316-2020-LEETCODE-面试题 01.06-字符串压缩

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

自己写的双百分之百:(值得注意的是使用字符数组要比使用字符串的内部方法charAt()要快很多,
用字符串内部封装的方法时几乎是使用字符数组的三倍 9ms vs 3ms)

public String compressString(String S) {
        if (S.length() == 0){
            return "";
        }
        char[] array = S.toCharArray();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < array.length; i++) {
            sb.append(array[i]);
            int count = 1;
            while (i + 1 < array.length && array[i + 1] == array[i]){
                i++;
                count++;
            }
            sb.append(count);
        }
        if (sb.length() >= array.length){
            return S;
        }
        return sb.toString();
    }
public String compressString(String S) {
        if (S.length() == 0){
            return "";
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < S.length(); i++) {
            sb.append(S.charAt(i));
            int count = 1;
            while (i + 1 < S.length() && S.charAt(i) == S.charAt(i + 1)){
                i++;
                count++;
            }
            sb.append(count);
        }
        if (sb.length() >= S.length()){
            return S;
        }
        return sb.toString();
    }
发布了98 篇原创文章 · 获赞 0 · 访问量 2195

猜你喜欢

转载自blog.csdn.net/weixin_43221993/article/details/104893675