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

字符串part01(24.01.03)

安排:先独立做题,然后看视频讲解,然后看文章讲解,然后再重新做一遍题,把题目AC,最后整理成今日当天的博客。


  • 学习时长:3小时
  • 学习内容:自己尝试+pdf说明+视频+力扣题解+自己默写
  • 学习感悟:python语句还怪简单的

344.反转字符串 

题目链接力扣题目链接

笔记:

        1.双指针首尾同时向中间移动,两两交换。

        2.字符串也是一种数组,所以元素在内存中是连续分布,这就决定了反转链表和反转字符串方式上还是有所差异的。

提交代码:

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

541. 反转字符串II

题目链接力扣题目链接

笔记:

        1.系统自带的库函数涉及区间都是左闭右开的。

        2.对于代码的一些解释:

  • s[:p] 表示字符串 s 中从索引 0 到索引 p(不包括 p)的部分。
  • s[p: p2] 表示字符串 s 中从索引 p 到索引 p2(不包括 p2)的部分。
  • [::-1] 是 Python 中用来对序列进行反转的操作符。
  • + 是字符串连接操作符。
  • s[p2:] 表示字符串 s 中从索引 p2 开始到结尾的部分。
  • 操作行代码的作用是:将字符串 s 中从索引 p 到索引 p2(不包括 p2)的部分进行反转,然后将反转后的部分与原字符串 s 中其他部分拼接起来,并将结果赋值给变量 s。

提交代码:

class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        p = 0
        while p < len(s):
            p2 = p + k
            s = s[:p] + s[p:p2][::-1] + s[p2:]
            p += 2*k
        return s

卡码网:54.替换数字

题目链接:卡码网题目链接

笔记:

        1.熟悉一下真正在python中可运行的代码的写法!

        2.if ord("0") <= ord(ss) <= ord("9"):

  • ord("0")ord("9") 分别代表字符 "0" 和 "9" 的 ASCII 值。
  • ord(ss) 获取当前字符 ss 的 ASCII 值。
  • 这个条件判断语句检查当前字符是否在数字 "0" 到 "9" 的 ASCII 范围内。

提交代码:

str1 = input()
ans = ''
for ss in str1:
    if ord('0')<=ord(ss)<=ord('9'):
        ans  += 'number'
    else:
        ans += ss
print(ans)

151.翻转字符串里的单词

题目链接:力扣题目链接

笔记:可以直接用库函数,也可以用双指针法

        1.库函数:先删除空白,然后整个反转,最后单词反转。 因为字符串是不可变类型,所以反转单词的时候,需要将其转换成列表,然后通过join函数再将其转换成字符串,所以空间复杂度不是O(1)。s = s.strip(): 移除字符串两端的空格。s = ' '.join(word[::-1] for word in s.split()): 将字符串拆分为单词,然后反转每个单词,最后用空格将它们连接起来。

        2.双指针法:类似移除元素的方法

提交代码:

class Solution:
    def reverseWords(self, s: str) -> str:
        s = s.strip()
        s = s[::-1]
        s = ' '.join(word[::-1] for word in s.split())
        return s

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

题目链接:卡码网题目链接

笔记:

  1. 从用户输入获取一个整数 n,表示字符串的旋转量。
  2. 从用户输入获取一个字符串 s,表示要进行旋转操作的字符串。
  3. 打印将字符串 s 向左旋转 n 个位置后的结果。
  • s[-n:]: 这部分表示取字符串 s 从倒数第 n 个字符开始到末尾的子串。
  • s[:-n]: 这部分表示取字符串 s 从开头到倒数第 n 个字符的子串。
  • +: 将上述两个子串连接起来,实现字符串的左旋转。
  • 最后,通过 print 语句输出旋转后的结果。

提交代码:

n = int(input())
s = input()
print(s[-n:]+s[:-n])
  • 39
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值