代码随想录算法训练营第八天|344. 反转字符串 541. 反转字符串II 剑指Offer05.替换空格 151. 反转字符串中的单词 剑指Offer58. 左旋转字符串

344. 反转字符串

题目链接:https://leetcode.cn/problems/reverse-string/

思路:双指针

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

541. 反转字符串II

题目链接:https://leetcode.cn/problems/reverse-string-ii/

思路:上一题一样的思路 只是用了切片分段

class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        def reverse(s):
            left, right = 0, len(s)-1
            while left <= right:
                s[left],s[right] = s[right], s[left]
                left += 1
                right -= 1
            return s
        
        res = list(s)

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

剑指Offer05.替换空格

题目链接:https://leetcode.cn/problems/ti-huan-kong-ge-lcof/

思路:除了python中特殊的写法 就是暴力了(还没有深究python这种写法的原理,懂哥可以留言教下小弟)

class Solution:
    def replaceSpace(self, s: str) -> str:
        #return '%20'.join(s.split(' '))
        ns = list(s)
        for i in range(len(ns)):
            if ns[i] == ' ':
                ns[i] = '%20'
        return ''.join(ns)
    

151. 反转字符串中的单词

题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/

思路:先全部从后往前反转,最后反转每个单词

class Solution:
    def reverseWords(self, s: str) -> str:
        s_list = [i for i in s.split(' ') if len(i) > 0]
        return ' '.join(s_list[::-1])

剑指Offer58. 左旋转字符串

题目链接:https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/

class Solution:
    def reverseLeftWords(self, s: str, n: int) -> str:
        s = list(s)
        s[0:n] = list(reversed(s[0:n]))
        s[n:] = list(reversed(s[n:]))
        s.reverse()

        return ''.join(s)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值