【训练营】Day08 字符串

Day08 字符串

1. 反转字符串

● 344.反转字符串

关键步骤就不要用库函数啦

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        # 双指针
        l, r = 0, len(s)-1
        while l<r:
            s[l], s[r] = s[r],s[l]
            l+=1
            r-=1

2. 反转字符串II

● 541. 反转字符串II

在反转字符串外面嵌套一个for循环

class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        def reverse_(str_):
            l, r = 0, len(str_)-1
            while l<r:
                str_[l], str_[r] = str_[r], str_[l]
                l+=1
                r-=1
            return str_

        s = list(s)
        for i in range(0,len(s), 2*k):
            s[i:i+k] = reverse_(s[i:i+k])
        return ''.join(s)

3. 剑指Offer 05.替换空格

 剑指Offer 05.替换空格

因为字符串是不可变类型,所以操作字符串需要将其转换为列表,因此空间复杂度不可能为O(1)

class Solution:
    def replaceSpace(self, s: str) -> str:
        l = s.split(" ")
        return "%20".join(l)

4. 翻转字符串里的单词

● 151.翻转字符串里的单词

提高一下本题的难度:不要使用辅助空间,空间复杂度要求为O(1)。

本题难度在于:字符串前后都可能有空格

参考!数组章节中的移除元素

class Solution:
    def reverseWords(self, s: str) -> str:
        w = s.split()
        l, r = 0,len(w)-1
        while l<r:
            w[l], w[r] = w[r], w[l]
            l+=1
            r-=1
        return " ".join(w)

快慢指针

5. II.左旋转字符串

● 剑指Offer58-II.左旋转字符串

class Solution:
    def reverseLeftWords(self, s: str, n: int) -> str:
        left = s.pop(0:n)
        return s+left
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值