代码随想录算法训练营第八天 | 344.反转字符串,541.反转字符串 II,卡码网:54.替换数字
本文最后更新于 100 天前,其中的信息可能已经有所发展或是发生改变。

前言

今天是算法训练营的第八天,可以明显发现坚持人数在开营一周之后明显下降了很多。

今天的题目相对来说比较轻松简单,第一道一个反转字符串用双指针轻松搞定,第二道是在前一道基础上增加了一些规则需要对规则思考清楚,第三道题如果单开一个字符串来打印还是比较简单的。

344.反转字符串

题目链接:344. 反转字符串

题目描述:

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

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

思路

这道题还是比较简单的,和之前反转数组的做法类似,使用双指针从两段向内收进行替换,除了双指针也可以选择直接调用 Python 中自带的库函数,但由于是打基础,所以还是老实写双指针。

实现写法

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

541.反转字符串II

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

题目描述:

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

思路

这道题实际上只是反转字符串的基础上套了一个规则场景,重要的是理解规则,在刚看到这道题时,我的想法是三个 if 模拟三条规则,但实现起来存在大量的冗余,看完题解后大悟实际上使用切片就可以把这三个规则全都囊括。

实现写法

 class Solution:
    def reverseStr(self, s: str, k: int) -> str:
        def reverse_substring(text):
            left, right = 0, len(text) - 1
            while left < right:
                text[left], text[right] = text[right], text[left]
                left += 1
                right -= 1
            return text
        n = len(s)
        res = list(s)
        for i in range(0, len(s) - 1, 2 * k):
            res[i: i + k] = reverse_substring(res[i: i + k])
        return "".join(res)

卡码网:54.替换数字

题目链接:54.替换数字(第八期模拟笔试)

题目描述:

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

思路

又是不熟悉的ACM 输入输出模式,不过由于这次的题目比较简单所以实现起来还是比较容易的,核心思想就是读字符串中的每一个字符进行是否是数字的判断,这边还可以使用到isdigit()函数,如果判断到就在输出里加上number,如果不是就输出字符本身

实现写法

 str1 = input()
ans = ""
for ss in str1:
    if ord("0") <= ord(ss) <= ord("9"):
        ans += "number"
    else:
        ans += ss
print(ans)

总结

今天的题量相对来说比较小,也比较简单,可能由于python的便利性过于强大导致题目实际上实现起来没有特别难以理解。

如果觉得文章有所帮助,可以选择智齿一下博主,一缘一分期待加入૮(˶ᵔ ᵕ ᵔ˶)ა
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇