力扣刷题Day 8 | 344.反转字符串,541. 反转字符串II,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

344.反转字符串

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

视频讲解

字符串基础操作! | LeetCode:344.反转字符串_哔哩哔哩_bilibili

笔记

  1. 使用双指针直接交换元素

Python代码

# 用双指针
class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """

        left = 0
        right = len(s) - 1
        while left < right:
            s[left],s[right] = s[right],s[left]
            left += 1
            right -= 1


541. 反转字符串II

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

视频讲解

字符串操作进阶! | LeetCode:541. 反转字符串II_哔哩哔哩_bilibili

笔记

  1. 首先定义一个子函数,用于反转指定字串
  2. range(start, end, step)中指定step为2*k
  3. 对于切片,如果s='123',s[0:999]返回‘123’,也就是当字符串的实际长度不够切片的指定长度时,会返回全部字符串。对于本题如果最后剩的字符串不够k个,要全部反转,那么用res[i:i+k]是符合的;如果最后剩的字符串大于k个小于2k个,依然反转前k个,也是满足要求的
  4. 对字符串进行变化的题目,思路要想到把原始字符串转换为列表,然后对列表进行原地操作

Python代码

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

        res = list(s)
        for i in range(0, len(s), 2*k):
            res[i: i + k] = reverseSubstring(res[i: i + k]) # 利用列表原地修改

        return "".join(res)


剑指Offer 05.替换空格

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

文章讲解

代码随想录

Python代码

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


# 用join + split

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

 


151.翻转字符串里的单词

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

视频讲解

字符串复杂操作拿捏了! | LeetCode:151.翻转字符串里的单词_哔哩哔哩_bilibili

笔记

  1. split()函数括号中不加任何东西,默认可以按空格分割,并且把结果中的空字符串删除掉,留下有用信息
  2. 结合join和切片操作得到翻转效果

Python代码

class Solution:
    def reverseWords(self, s: str) -> str:
        res = s.split()
        return " ".join(res[::-1])

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

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

文章讲解

代码随想录

笔记

  1. 用切片操作和+运算符得到结果

Python代码

class Solution:
    def reverseLeftWords(self, s: str, n: int) -> str:
        return s[n::]+s[0:n]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值