代码随想录训练营第九天 || 1.反转字符串中的单词 2.

反转字符串中的单词:

讲解:代码随想录

思路:

先将字符串整体反转,再将其中的每个单词反转

代码:

类版本四:

class Solution:
    def single_reverse(self,result,slow,fast):
        while slow<fast:
            result[fast],result[slow] = result[slow],result[fast]
            slow +=1
            fast -=1
    def reverseWords(self, s: str) -> str:
        s = list(s)
        result =""
        s.reverse()
        fast=0
        while fast <len(s):
            if s[fast]!=' ':
                if len(result) != 0:
                    result+= ' '
                while fast<len(s) and s[fast]!=' ':
                    result += s[fast]#因为定义的是空字符串,所以没法用索引
                    fast+=1
            else:
                fast+=1
        fast = 0
        slow = 0
        result = list(result)
        while fast <= len(result):
            if fast ==len(result) or result[fast]==' ':
                self.single_reverse(result,slow,fast-1)
                slow=fast+1
                fast+=1
            else:
                fast+=1
            
        return ''.join(result)
    


        

遇到的问题:

1.对于字符串单词的读取

2.字符串是无法修改的

3.对字符串添加时,可以直接使用+号添加

右旋字符串:

讲解:代码随想录

思路:

先反转整个字符串,再反转前k个,再反转剩下的。原因是,之前右旋的区间在最后,全部反转后,右旋的区间跑到了前面。

代码:

def fanzhuan(s,left,right):
    while left < right:
        s[left],s[right] = s[right],s[left]
        left+=1
        right-=1
k = input()
k =int(k)
s = input()
s = list(s)
length = len(s)
fanzhuan(s,0,length-1)
fanzhuan(s,0,k-1)
fanzhuan(s,k,length-1)
a = ''.join(s)
print(f"{a}")

遇到的问题:

1.对于整个思路的理解

2.join()函数不会修改列表s,而是重新生成一个新结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值