zoukankan      html  css  js  c++  java
  • [LC] 443. String Compression

    Given an array of characters, compress it in-place.

    The length after compression must always be smaller than or equal to the original array.

    Every element of the array should be a character (not int) of length 1.

    After you are done modifying the input array in-place, return the new length of the array.

    Follow up:
    Could you solve it using only O(1) extra space?

     

    Example 1:

    Input:
    ["a","a","b","b","c","c","c"]
    
    Output:
    Return 6, and the first 6 characters of the input array should be: ["a","2","b","2","c","3"]
    
    Explanation:
    "aa" is replaced by "a2". "bb" is replaced by "b2". "ccc" is replaced by "c3".

    class Solution {
        public int compress(char[] chars) {
            if (chars.length <= 1) {
                return chars.length; 
            }
            int index = 0;
            int res = 0;
            while (index < chars.length) {
                int curCount = 0;
                char curChar = chars[index];
                while (index < chars.length && chars[index] == curChar) {
                    index += 1;
                    curCount += 1;
                }
                chars[res++] = curChar;
                if (curCount != 1) {
                    for (char c: Integer.toString(curCount).toCharArray()) {
                        chars[res] = c;
                        res += 1;
                    }
                }
            }
            return res;
        }
    }


  • 相关阅读:
    纪中第三天
    纪中第一天
    图片验证码的实现
    使用监听器解决路径问题
    log4j测试示例
    redis示例
    kafka示例
    CSRF verification failed. Request aborted.
    TemplateDoesNotExist
    创建 django 项目命令
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12182187.html
Copyright © 2011-2022 走看看