zoukankan      html  css  js  c++  java
  • 【leetcode 简单】 第一百零六题 压缩字符串

    给定一组字符,使用原地算法将其压缩。

    压缩后的长度必须始终小于或等于原数组长度。

    数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。

    在完成原地修改输入数组后,返回数组的新长度。

    进阶:
    你能否仅使用O(1) 空间解决问题?

    示例 1:

    输入:
    ["a","a","b","b","c","c","c"]
    
    输出:
    返回6,输入数组的前6个字符应该是:["a","2","b","2","c","3"]
    
    说明:
    "aa"被"a2"替代。"bb"被"b2"替代。"ccc"被"c3"替代。
    

    示例 2:

    输入:
    ["a"]
    
    输出:
    返回1,输入数组的前1个字符应该是:["a"]
    
    说明:
    没有任何字符串被替代。
    

    示例 3:

    输入:
    ["a","b","b","b","b","b","b","b","b","b","b","b","b"]
    
    输出:
    返回4,输入数组的前4个字符应该是:["a","b","1","2"]。
    
    说明:
    由于字符"a"不重复,所以不会被压缩。"bbbbbbbbbbbb"被“b12”替代。
    注意每个数字在数组中都有它自己的位置。
    

    注意:

    1. 所有字符都有一个ASCII值在[35, 126]区间内。
    2. 1 <= len(chars) <= 1000
    class Solution:
        def compress(self, chars):
            """
            :type chars: List[str]
            :rtype: int
            """
            count,i = 1,0 #count为 字符重复次数,i为最终返回列表长度
            chars_len = len(chars)  
            for j in range(1,chars_len+1):
                if j < chars_len and chars[j] == chars[j-1]:
                    count+=1 #当chars的当前位置字符和前一个位置字符相等时,增加字符重复次数的计数
                else:
                    chars[i] = chars[j-1] #当chars的当前位置字符和前一个位置字符不相等时,更改列表i位置的元素
                    i += 1                #i的位置后移一位
                    if count > 1:         #如果存在重复的字符 将count转换为字符串 赋值到列表i的位置
                        for a in str(count):
                            chars[i] = a
                            i += 1
                    count = 1            #初始化count
            return i #i是最后更改后列表的长度
  • 相关阅读:
    Software Solutions CACHE COHERENCE AND THE MESI PROTOCOL
    CACHE COHERENCE AND THE MESI PROTOCOL
    Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS
    Organization SYMMETRIC MULTIPROCESSORS
    PARALLEL PROCESSING
    1分钟内发送差评邮件
    Secure Digital
    SYMMETRIC MULTIPROCESSORS
    A Taxonomy of Parallel Processor Architectures
    parallelism
  • 原文地址:https://www.cnblogs.com/flashBoxer/p/9551611.html
Copyright © 2011-2022 走看看