力扣-python-故障键盘

news2024/11/25 15:35:04

题解:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1561508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s安装traefik作为ingress

一、先来介绍下Ingress Ingress 这个东西是 1.2 后才出现的,通过 Ingress 用户可以实现使用 nginx 等开源的反向代理负载均衡器实现对外暴露服务,以下详细说一下 Ingress,毕竟 traefik 用的就是 Ingress 使用 Ingress 时一般会有三个组件: …

从0到1利用express搭建后端服务

目录 1 架构的选择2 环境搭建3 安装express4 创建启动文件5 express的核心功能6 加入日志记录功能7 日志记录的好处本节代码总结 不知不觉学习低代码已经进入第四个年头了,既然低代码很好,为什么突然又自己架构起后端了呢?我有一句话叫低代码…

大模型 web ui 界面 text-generation-webui

目录 前言 web ui ValueError: When localhost is not accessible 前言 使用 text-generation-webui 生成大模型界面,这个是专门用于文本对话生成的 web ui 界面 GitHub - oobabooga/text-generation-webui: A Gradio web UI for Large Language Models. Suppo…

【语言信号增强算法研究-1】维纳滤波(Wiener Filter)

1 语音增强方法分类 2 维纳滤波的局限性 对于非线性和非高斯噪声的处理效果不佳; 对于信号和噪声的统计特性要求比较高,需要准确地了解信号和噪声的分布规律(说明自适应很差); 在处理复杂信号时,需要进行多…

【Functional Affordances】如何确认可抓取的区域?(前传)

文章目录 1. 【Meta AI】Emerging Properties in Self-Supervised Vision Transformers2. 【Meta AI】DINOv2: Learning Robust Visual Features without Supervision3. 【NeurIPS 2023】Diffusion Hyperfeatures: Searching Through Time and Space for Semantic Corresponden…

ElasticSearch理论指导

引子 本文致力于ElasticSearch理论体系构建,从基本概念和术语讲起,具体阐述了倒排索引和TransLog,接着讲了ElasticSearch的增删改查的流程和原理,最后讲了讲集群的选举和脑裂问题。 前言 大碗宽面-Kafka一本道万事通&#xff0…

蓝桥杯真题:成绩统计

这题思路简单,但是输出结果的位置容易出错,题目要求四舍五入,所以要用Math.round()的方法

瑞吉外卖实战学习--10、完成新增菜品分类

完成新增菜品分类 前言1、前期准备定义实体类和实体对象 2、创建修改的接口 前言 1、前期准备 定义实体类和实体对象 package com.example.ruiji_demo.entity;import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; …

kubernetes-Pod基于污点、容忍度、亲和性的多种调度策略(二)

Pod调度策略 一.污点-Taint二.容忍度-Tolerations三.Pod常见状态和重启策略1.Pod常见状态2.Pod的重启策略2.1测试Always重启策略2.2测试Never重启策略2.3测试OnFailure重启策略(生产环境中常用) 一.污点-Taint 在 Kubernetes 中,污点&#x…

稻盛和夫|普通人如何才能取得非凡成就?

哈喽,你好啊,我是雷工! 稻盛和夫老先生曾经回答过这么一个问题: 资质平庸的普通人如何才能取得非凡的成就? 稻盛和夫认为:人生成就=能力努力态度。 也就是:做一个努力工作却不甘于只做眼前的事,而想要做更有挑战的事,这种人才能逃离平庸,取得非凡成就。 01 不甘平凡…

django+uniapp校园失物招领系统e5asg 微信小程序python

本失物招领小程序,使用的是比较成熟的python语言和比较完善的MySQL数据库,将网络失物招领小程序信息管理系统可以更安全、技术性更强的满足网站所有信息的管理。 失物招领小程序主要实现了管理员服务端模块、学生微信端模块二大部分。通过本失物招领小程…

200个有趣的HTML前端游戏项目合集(持续更新中)

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

新生报到系统的设计与实现(论文+源码)_kaic

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对新生报到信息管理混乱,出错率高,信息安全性差…

11-2说说小滴课堂之前的被薅羊毛的事情+防范解决方案

11-2说说小滴课堂之前的被薅羊毛的事情防范解决方案

【LVGL-字库应用】

LVGL-中文字库应用 ■ LVGL-内部字库■ LVGL 内部字库的使用流程: ■ LVGL-自定义字库■ 方法一:C 语言数组(内部读取)-在线转换工具■ 方法二:C 语言数组(内部读取)-利用离线字体转换软件&…

【Java】API——Calendar日期类使用+题目演示

目录 Calendar日期类简单介绍 导入对应包: 获取 Calendar 对象: 设置日期和时间: 获取日期和时间的各个部分: 日期和时间的加减操作: 例题:世纪末的星期 题目描述 题目代码 Calendar日期类简单介绍…

FPGA之状态机学习

作为一名逻辑工程师,掌握和应用状态机设计是必不可少的。能够灵活的应用状态机是对逻辑工程师最基本的要求,状态机设计的好坏能够直接影响到设计系统的稳定性,所以学会状态机是非常的重要。 1.状态机的概念 状态机通过不同的状态迁移来完成特…

计算机网络—TCP协议详解:特性、应用(1)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:マリンブルーの庭園—ずっと真夜中でいいのに。 0:34━━━━━━️💟──────── 3:34 🔄 ◀️…

YOLOv8部署到C++上(综合版笔记)

这段时间由于项目的需要,需要将yolov8部署到C上以及跟相应的算法结合,花了我不少时间。 现阶段有考虑过使用onnx转Tensort,但是无法输出分类的结果,故放弃,有目标检测的小伙伴可以试试,接下来使用onnxrunt…

Qt打印系统库的日志 - QLoggingCategory

Qt的动态库通过源码可以可以看到含有大量的qCInfo 和 qCDebug 等大量的日志, 但是我们正常运行Qt程序,这些动态库或插件里面的日志是不会输出到我们的控制台里面的。 所以本章主要记录怎么输出这些日志出来。 一: 步骤 主要使用的是Qt的 函…