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

344.反转字符串

题目链接:344.反转字符串

使用双指针

代码如下:

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

使用栈

代码如下:

class Solution:
    def reverseString(self, s: List[str]) -> None:
        stack = []
        for char in s:
            stack.append(char)
        for i in range(len(s)):
            s[i] = stack.pop()

使用range

代码如下:

class Solution:
    def reverseString(self, s: List[str]) -> None:
        n = len(s)-1
        for i in range(len(s)//2):
            s[i],s[n-i] = s[n-i],s[i]

学习时长
20分钟

541. 反转字符串II

题目链接;541. 反转字符串II

使用切片整体替换

代码如下:

class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        def reverse_substring(text):
            left = 0
            right = len(s) - 1
            while left < right:
                s[left], s[right] = s[right], s[left]
                left += 1
                right -= 1
            return text
        res = list(s)
        for cur in range(0,len(s),2*k):
           res[cur:cur+k] = reverse_substring(res[cur:cur+k])
        return ''.join(res)

使用连续切片替换

代码如下:

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 = p + 2*k
        return s

学习时长
40分钟

替换数字

题目链接:替换数字
代码如下:

strl = input()
count = 0
for num in strl:
    if ord("0") <= ord(num) <= ord("9"):
        count += 1

print(result)

学习时长
10分钟

151. 反转字符串中的单词

题目链接:151. 反转字符串中的单词
思路:先移除多余空格,再将整个字符串反转,最后将每个单词反转
代码如下:

class Solution:
    def reverseWords(self, s: str) -> str:
        # 删除首尾的空格
        s = s.strip() #strip()主要是这个字符串的首尾字符,如果括号里面为空的话,默认删除当前字符串的首尾的空格和换行符。
        s = s[::-1]  # 翻转整个字符串
        # 将字符串按照空格进行拆分成单词,再将单词翻转后用空格进行拼接
        s = " ".join(word [::-1]for word in s.split()) # split函数是对字符串进行分割,分割后变成了一个字符串列表,括号内是空的,也就默认的按照空格进行分割。
        return s

学习时长
10分钟

右旋字符串

题目链接:右旋字符串
代码如下:

k =int(input()) 
s = input()
p = len(s)-k
s =  s[p:]+s[:p]
print(s)

学习时长
10分钟

今日总结

学习了切片的用法和几个操作string的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值