代码随想录算法训练营第八天 | 344.反转字符串、541.反转字符串II、卡码网:54.替换数字、151.翻转字符里的单词、卡码网:55.右旋转字符串

本文介绍了Python中一系列字符串操作题目,包括反转字符串、单词翻转、替换数字以及字符串右旋转,通过实例展示了不同的解题思路和代码实现,适合提升字符串处理技巧。
摘要由CSDN通过智能技术生成

目录

344.反转字符串

思路

代码

541.反转字符串II

思路

代码

卡码网:54.替换数字

思路

代码

151.翻转字符串里的单词

思路

代码(真的很简洁了,两行代码就解决)

卡码网:55.右旋转字符串

思路

代码


344.反转字符串

建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数 

题目链接/文章讲解/视频讲解:代码随想录

思路

        python组选手见到这道题直接笑嘻了,这不是直接把字符串存进data[ ] ,然后

data[left], data[right] = data[right], data[left] 就换过来了吗。。。

        好吧不好意思,我话说早了。。。原来有更简单的:

        下面这个更是一个字, 

 

代码
from typing import List
class Solution:
    def reverseString(self, s: List[str]) -> None:
        left=0
        right=len(s)-1
        while left<=right:
            s[left],s[right]=s[right],s[left]
            left+=1
            right-=1
        return 

541.反转字符串II

建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。 

题目链接/文章讲解/视频讲解:代码随想录

思路

        我的思路是把字符串长度先和2k进行取余的操作,得到前面的整数段和后面的小段,对前面的整数段使用for循环,步长是2k,在每一次循环中对前k个元素进行反转。然后单独对后面那段分析。

       链接里的思路都非常好,到今天我才知道:

字符串末尾如果超过最大长度,则会返回至字符串最后一个值,这个特性可以避免一些边界条件的处理。

 

代码

        我的一坨,直接看链接吧。


卡码网:54.替换数字

建议:对于线性数据结构,填充或者删除,后序处理会高效的多。好好体会一下。

题目链接/文章讲解:代码随想录

思路

        和链接一致,就是。。。原来有函数可以直接判断一个数是不是数字啊。。。用.isdigit() 就能返回一个数是不是数字,还有我一直不知道怎么把列表变成字符串传出去,原来可以return ''.join(lst)变成一个string

代码
class Solution:
    def change(self, s):
        lst = list(s) # Python里面的string也是不可改的,所以也是需要额外空间的。空间复杂度:O(n)。
        for i in range(len(lst)):
            if lst[i].isdigit():
                lst[i] = "number"
        return ''.join(lst)

151.翻转字符串里的单词

建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。 

题目链接/文章讲解/视频讲解:代码随想录

思路

        这道题,测试用例真是我直呼好家伙,空格可以出现在左边右边,中间还能给我连着按好多个空格(每日崩溃1/1)

        当然这些都是有解的,用data = s.strip(" ").split() 直接把左边右边和中间的空格全部干掉,data存的直接就是我要的每一个词。然后用直接用join()连接即可。

代码(真的很简洁了,两行代码就解决)
class Solution:
    def reverseWords(self, s: str) -> str:
        data = s.strip(" ").split()   
        string = " ".join(word for word in data[::-1])
        return string

卡码网:55.右旋转字符串

建议:题解中的解法如果没接触过的话,应该会想不到

题目链接/文章讲解:

代码随想录

思路

        就是直接用切片把后面移到前面,前面跟在后面嘛,没什么好讲的。

代码
k = int(input())
string = input()
string = string[len(string)-k:] + string[:len(string)-k]
print(string)

8天了,终于有一天是准时打卡了!!!

下班~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值