代码随想录算法训练营DAY8 | 344.反转字符串、541. 反转字符串II、54.替换数字、151.翻转字符串里的单词

题解

​ ● 344.反转字符串

​ ● 541. 反转字符串II

​ ● 卡码网:54.替换数字

​ ● 151.翻转字符串里的单词

题目链接: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):
            s[left],s[right] = s[right],s[left]
            left += 1
            right -= 1
        return s

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

  • 每2k个字符,将前k个字符进行反转
class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        lens = len(s)
        lists = list(s)
        n = lens//(2*k)
        m = lens%(2*k)
        while(n+1):
            left = n*k*2
            right = left+k-1
            if m >= 0 and m < k: #最后一段,不足k字符
                right = left+m-1
                m = -1
            while(left<right):
                lists[left],lists[right] = lists[right],lists[left]
                left += 1
                right -= 1
            n -= 1
        sn = ''
        for key in lists:
            sn += key
        return sn

题目链接:54.替换数字

(卡码网题目)

题目描述

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。

输入描述

输入一个字符串 s,s 仅包含小写字母和数字字符。

输出描述

打印一个新的字符串,其中每个数字字符都被替换为了number

输入示例

a1b2c3

输出示例

anumberbnumbercnumber

题解

方法一:

  • 字符串替换
s = input()
s = s.replace('0','number')
s = s.replace('1','number')
s = s.replace('2','number')
s = s.replace('3','number')
s = s.replace('4','number')
s = s.replace('5','number')
s = s.replace('6','number')
s = s.replace('7','number')
s = s.replace('8','number')
s = s.replace('9','number')
print(s)

方法二:

  • 遍历,检测到数字时替换
def changenum(s):
    sn = ''
    for c in s:
        if (ord(c) >= ord('0')) and (ord(c) <= ord('9')):
            sn += 'number'
        else:
            sn += c
    return sn
    
if __name__ == '__main__':
    s = input()
    sn = changenum(s)
    print(sn)

题目链接:151. 反转字符串中的单词

  • Python字符串不可变,需要将其转成列表
  • 要用到额外空间
class Solution:
    def reverseWords(self, s: str) -> str:
        words = s.split()
        left, right = 0, len(words) - 1
        while left < right:
            words[left], words[right] = words[right], words[left]
            left += 1
            right -= 1
        return " ".join(words)
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值