代码随想录算法训练营第八天| 344. 反转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词、剑指 Offer 58 - II. 左旋转字符串

344. 反转字符串:


代码思路

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:
            left_char = s[left]
            right_char = s[right]
            s[right] = left_char
            s[left] = right_char
            left += 1
            right -= 1

541. 反转字符串 II:


代码思路

class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        s_list = list(s)

        length = len(s_list)
        n = 0
        while n*k <= length:
            if n % 2 == 0:
                left = n*k
                if (n+1)*k > length:
                    right = length - 1
                else:
                    right= (n+1)*k-1
                while left <= right:
                    left_char = s_list[left]
                    right_char = s_list[right]
                    s_list[left] = right_char
                    s_list[right] = left_char
                    left += 1
                    right -= 1
                n += 1
            else:
                n += 1
        return "".join(s_list)

剑指 Offer 05. 替换空格:


代码思路

class Solution:
    def replaceSpace(self, s: str) -> str:
        s_lis = list(s)
        for i in range(len(s_lis)):
            if s_lis[i] == " ":
                s_lis[i] = "%20"
        return "".join(s_lis)

151. 反转字符串中的单词:

代码思路

class Solution:
    def reverseWords(self, s: str) -> str:
        # s = s.strip()

        s_list = s.split(" ")
        length = len(s_list)

        n = 0
        flag = 0
        while n <= length - 1:
            if s_list[flag] == "":
                del s_list[flag]
                flag -= 1
            flag += 1
            n += 1
            
        left = 0
        right = len(s_list)-1


        while left <= right:
            left_str = s_list[left]
            right_str = s_list[right]
            s_list[left] = right_str
            s_list[right] = left_str
            left += 1
            right -= 1
        return " ".join(s_list)

剑指 Offer 58 - II. 左旋转字符串:


代码思路

class Solution:
    def reverseLeftWords(self, s: str, n: int) -> str:
        s_list = list(s)
        sub_str_head = s_list[:n]
        sub_str_tail = s_list[n:]
        return "".join(sub_str_tail + sub_str_head)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值