欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode (String Compression)

程序员文章站 2024-03-12 23:33:39
...

Title:String Compression  443

Difficulty:Easy

原题leetcode地址:https://leetcode.com/problems/string-compression

 

1.    双指针

时间复杂度:O(n^2),嵌套循环,最长可能不需要到n^2。

空间复杂度:O(1),没有申请额外空间。

    /**
     * 双指针,一个指针指向重复字符串的第一个,另一个指针向后遍历并计数
     * 当计数是一位数时,不需要放入其中
     * 当计数是两位数及两位数以上,需要对这两位数进行拆分
     * @param chars
     * @return
     */
    public static int compress(char[] chars) {

        int len = chars.length;
        int cur = 0;

        for (int i = 0, j =0; i < len; i = j) {
            while (j < len && chars[i] == chars[j]) {
                j++;
            }
            chars[cur++] = chars[i];
            if (j - i == 1) {
                continue;
            }
            for (char c : (j - i + "").toCharArray()) {
                chars[cur++] = c;
            }
        }

        return cur;

    }