Bootstrap

代码随想录算法训练营第八天| 344. 反转字符串、541. 反转字符串II、卡码网:54. 替换数字

344. 反转字符串

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

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

状态:用左右指针顺利通过

左右指针:

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

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

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

状态:有思路,首先是一个字符串到列表的转换,返回数据需要再转换成字符串,细节理清楚

class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        left=0
        s=list(s)
        length=len(s)
        while left<length:
            self.reverse(s,left,min(left+k-1,length-1))
            left+=2*k
        return ''.join(s)

    def reverse(self,arr:list,i:int,j:int):
        while i<j:
            arr[i],arr[j]=arr[j],arr[i]
            i+=1
            j-=1            

卡码网,54. 替换数字

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

题目链接/文章讲解:替换数字

状态:很简单

 input的默认输入是字符串,需进行类型转换

if __name__=="__main__":
    s=list(input())
    for i in range(len(s)):
        if "0"<=s[i]<="9":
            s[i]="number"
    print(''.join(s))

 

;