力扣-python-故障键盘

题解:

from collections import deque

class Solution:
    def finalString(self, s: str) -> str:
        # 创建一个双端队列用于存储字符
        q = deque()
        # 定义一个标志位,用于标记当前字符应该添加到队列的哪一端
        head = False
        # 遍历输入的字符串s的每一个字符
        for ch in s:
            # 如果当前字符不是"i"
            if ch != "i":
                # 如果head为True,表示当前字符应该添加到队列的左端
                if head:
                    q.appendleft(ch)
                # 如果head为False,表示当前字符应该添加到队列的右端
                else:
                    q.append(ch)
            # 如果当前字符是"i"
            else:
                # 改变head的值,用于下一个字符的处理
                head = not head
        # 将队列中的字符连接起来,得到最终的字符串
        ans = "".join(q)
        # 如果最后一个字符应该添加到队列的左端,则将最终字符串反转
        if head:
            ans = ans[::-1]
        # 返回最终字符串
        return ans
算法讲解:
  1. 创建一个双端队列q和一个布尔变量headq用于存储处理后的字符,head用于标记当前字符应该添加到队列的哪一端。
  2. 遍历输入的字符串s的每一个字符。
  3. 如果当前字符不是"i",根据head的值将当前字符添加到队列的左端或右端。
  4. 如果当前字符是"i",则改变head的值,用于下一个字符的处理。
  5. 将队列q中的字符连接起来,得到最终的字符串ans
  6. 如果最后一个字符应该添加到队列的左端,则将最终字符串ans反转。
  7. 返回最终字符串ans
     

解法二:

class Solution:
    def finalString(self, s: str) -> str:
        # 初始化一个空字符串用于存储处理后的结果
        res = ''
        # 遍历输入的字符串s的每一个字符
        for ele in s:
            # 如果当前字符不是"i",将其添加到结果字符串res中
            if ele != 'i':
                res += ele
            # 如果当前字符是"i",将结果字符串res反转
            else:
                res = res[::-1]

        # 返回处理后的结果字符串res
        return res

算法讲解:

  1. 初始化一个空字符串res用于存储处理后的结果。
  2. 遍历输入的字符串s的每一个字符。
  3. 如果当前字符不是"i",将其添加到结果字符串res中。
  4. 如果当前字符是"i",将结果字符串res反转。
  5. 返回处理后的结果字符串res

请注意,这段代码在处理"i"字符时存在问题。当遇到第一个"i"时,它会将结果字符串res进行反转,但是在后续的字符处理中,每次遇到"i"时都会反转一次,这不符合预期。

class Solution:
    def finalString(self, s: str) -> str:
        result = ""
        head = False
        for ch in s:
            if ch != "i":
                if head:
                    result = ch + result  # 将字符插入到结果字符串的头部
                else:
                    result += ch  # 将字符插入到结果字符串的尾部
            else:
                head = not head  # 遇到字符"i"时,切换head标志的值
        if head:
            result = result[::-1]  # 如果最终head为True,说明还有一个字符需要插入到结果字符串的尾部,需要反转结果字符串
        return result

相关推荐

  1. 2024.4.1每日一题——故障键盘

    2024-04-05 17:02:06       41 阅读
  2. Leetcode 2810. 故障键盘

    2024-04-05 17:02:06       37 阅读
  3. leetcode 2810.故障键盘

    2024-04-05 17:02:06       37 阅读
  4. leetcode2810--故障键盘

    2024-04-05 17:02:06       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-05 17:02:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-05 17:02:06       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-05 17:02:06       82 阅读
  4. Python语言-面向对象

    2024-04-05 17:02:06       91 阅读

热门阅读

  1. 设计模式:适配器模式

    2024-04-05 17:02:06       35 阅读
  2. Git常用命令

    2024-04-05 17:02:06       27 阅读
  3. double二分(P3743 小鸟的设备)

    2024-04-05 17:02:06       41 阅读
  4. html网页设计项目实战--王者荣耀官网源码

    2024-04-05 17:02:06       31 阅读
  5. android wifi连接

    2024-04-05 17:02:06       43 阅读
  6. 【无标题】

    2024-04-05 17:02:06       39 阅读
  7. 物联网之传感器如何选型

    2024-04-05 17:02:06       36 阅读
  8. 宝塔 docker 安装 rabbitmq

    2024-04-05 17:02:06       34 阅读
  9. npm常用命令

    2024-04-05 17:02:06       36 阅读
  10. 什么是Android ABI?

    2024-04-05 17:02:06       32 阅读
  11. Python 中的 *args 和 **kwargs

    2024-04-05 17:02:06       39 阅读
  12. 设计模式:桥接模式

    2024-04-05 17:02:06       38 阅读
  13. AcWing 4407.扫雷

    2024-04-05 17:02:06       37 阅读