Leetcode-面试题 01.06 字符串压缩

作者: itbird01 | 来源:发表于2021-09-09 14:28 被阅读0次

    面试题 01.06. 字符串压缩

    解题思路

    1.判断字符串长度,如果小于等于1,则直接返回S
    2.for循环判断
    1)如果下一个字符与当前字符相等,则k++
    2)如果下一个字符与当前字符不相等,则可不再相加
    3)把当前结果,做string加法
    3.继续循环判断
    4.判断string与S长度,输出结果

    解题遇到的问题

    1.耗时与内存较大,需要优化
    2.尝试将string操作换成了stringbuilder,解决耗时和内存问题
    3.StringBuilder构造方法,字符传入和字符串传入有区别

    后续需要总结学习的知识点

    ##解法1
    class Solution {
     public static String compressString(String S) {
            if (S.length() <= 1) {
                return S;
            }
    
            char[] cs = S.toCharArray();
            String string = String.valueOf(cs[0]);
            int k = 1;
            for (int i = 1; i < cs.length; i++) {
                if (string.endsWith(String.valueOf(cs[i]))) {
                    k++;
                } else {
                    string += k;
                    string += cs[i];
                    k = 1;
                }
            }
            string += k;
            if (string.length() >= S.length()) {
                return S;
            } else {
                return string;
            }
        }
    }
    
    ##解法2
    class Solution {
    public static String compressString(String S) {
            if (S.length() <= 1) {
                return S;
            }
    
            StringBuilder builder = new StringBuilder();
            char ch = S.charAt(0);
            int k = 1;
            for (int i = 1; i < S.length(); i++) {
                if (ch == S.charAt(i)) {
                    k++;
                } else {
                    builder.append(ch);
                    builder.append(k);
                    ch = S.charAt(i);
                    k = 1;
                }
            }
            builder.append(ch);
            builder.append(k);
            if (builder.toString().length() >= S.length()) {
                return S;
            } else {
                return builder.toString();
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:Leetcode-面试题 01.06 字符串压缩

        本文链接:https://www.haomeiwen.com/subject/ldlywltx.html