代码随想录算法训练营第八天 | 字符串:344反转字符串、

哆啦** / 2024-06-08 / 原文

反转字符串
https://leetcode.cn/problems/reverse-string/
反转字符串代码随想录
https://programmercarl.com/0344.反转字符串.html#算法公开课
替换数字
https://kamacoder.com/problempage.php?pid=1064
替换数字代码随想录
https://programmercarl.com/kama54.替换数字.html#其他语言版本

反转字符串

题目

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

题解

  • 要求交换 所以一定需要两两交换
  • 从前到中间对称交换即可

题解代码

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        n = len(s)
        for i in range(len(s)//2):
            l = i
            r = n-i-1
            tmp = s[l]
            s[l] = s[r]
            s[r] = tmp
        return s

替换数字

题目

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

题解

  • 字符串不能直接在原位修改
  • 但可以考虑转为list 再转回字符串
  • 字符串可以比大小

题解代码

input_str = input()
str_ = list(input_str)
for i in range(len(str_)):
    if "1"<=str_[i]<="9":
        str_[i]="number"

output = "".join(str_)
print(output)