0309leetcode刷题5道python

本文介绍了在LeetCode上的几道关于字符串操作的Python解题思路,包括移动数组中的0、删除重复字符、修复括号字符串和计算字符串美丽值等题目,提供了详细的解答和示例。
摘要由CSDN通过智能技术生成

283

题目描述:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:
在这里插入图片描述
解答:

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        for i in range(nums.count(0)):
            nums.remove(0)
            nums.append(0)

1047

题目描述:
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

示例:
在这里插入图片描述
解答:

class Solution:
    def removeDuplicates(self, S: str) -> str:
        # 初始化栈
        stack = []
        # 遍历栈元素
        for e in S:
            if stack and stack[-1] == e:
                stack.pop()
            else:
                stack.append(e)
        return "".join(stack)

1249

题目描述:
给你一个由 ‘(’、’)’ 和小写字母组成的字符串 s。
你需要从字符串中删除最少数目的 ‘(’ 或者 ‘)’ (可以删除任意位置的括号),使得剩下的「括号字符串」有效。
请返回任意一个合法字符串。
有效「括号字符串」应当符合以下 任意一条 要求:
空字符串或只包含小写字母的字符串
可以被写作 AB(A 连接 B)的字符串,其中 A 和 B 都是有效「括号字符串」
可以被写作 (A) 的字符串,其中 A 是一个有效的「括号字符串」

示例:
在这里插入图片描述
解答:

class Solution:
    def minRemoveToMakeValid(self, s: str) -> str:
        res = []
        for i,j in enumerate(s):
            if j =='(':
                res.append([i,j])
            elif j ==')':
                if res==[] or res[-1][1] != '(':
                    res.append([i,j])
                else:
                    res.pop()
        s = list(s)
        for k,l in enumerate(res):
            s.pop(l[0]-k)
        return ''.join(s)

1781

题目描述:
一个字符串的 美丽值 定义为:出现频率最高字符与出现频率最低字符的出现次数之差。
比方说,“abaacc” 的美丽值为 3 - 1 = 2 。
给你一个字符串 s ,请你返回它所有子字符串的 美丽值 之和。

示例:
在这里插入图片描述
解答:

class Solution:
    def beautySum(self, s: str) -> int:
        res = 0
        n = len(s)
        for i in range(n):
            d = defaultdict(int)
            for j in range(i, n):
                d[s[j]] += 1
                res += max(d.values()) - min(d.values())
        return res

面试题01.06

题目描述:
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。

示例:
在这里插入图片描述
解答:

class Solution:
    def compressString(self, S: str) -> str:
        #最后补一个字符可以省去一点边界处理
        n = len(S)
        if n <= 1:
            return S
        S += "$"
        now, cnt, ret = S[0], 1, ""
        for i in range(1, n + 1):
            if S[i] != now:
                ret += now + str(cnt)
                if len(ret) >= n:
                    return S[:n]
                now, cnt = S[i], 1
            else:
                cnt += 1
        return ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值