Leetcode443-压缩字符串

该博客探讨了LeetCode上的第443题,即如何使用原地算法压缩字符串。题目要求在不增加额外空间的情况下,压缩数组中的连续重复字符。文章给出了一个初步的解决方案,虽然时间效率为76ms,但作者表示会寻求更优的解法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

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

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

数组的每个元素应该是长度为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"替代。

代码:

class Solution:
    def compress(self, chars):
        """
        :type chars: List[str]
        :rtype: int
        """
        #chars.sort()
        i=0
        k=0
        while(i<len(chars)):
            str1=''
            chars[k]=chars[i]
            count=1
            for l in chars[i+1:]:
                if(l!=chars[i]):
                    break
                else:
                    count+=1
            #count=chars.count(chars[i])
            if(count!= 1):
                str1=str(count)
                for j in str1:
                    k+=1
                    chars[k]=j
            i+=count
            k+=1
        return k

总结:

暴力解决,运行时间76ms,还会继续考虑更为简单的解决方法。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值