力扣-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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ws_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值