代码随想录算法训练营第八天|leetcode344.反转字符串、leetcode541. 反转字符串II、卡码网54. 替换数字

news/2024/10/23 11:10:47/文章来源:https://www.cnblogs.com/csfy0524/p/18495942

1 leetcode344.反转字符串

题目链接:344. 反转字符串 - 力扣(LeetCode)

文章链接:代码随想录

视频链接:字符串基础操作! | LeetCode:344.反转字符串_哔哩哔哩_bilibili

自己的思路:直接使用python的内置函数reverse进行一个操作

1.1 自己的代码

1.1.1 python的内置函数
class Solution:def reverseString(self, s: List[str]) -> None:"""Do not return anything, modify s in-place instead."""return s.reverse()
1.1.2 使用链表的方法
class Solution:def reverseString(self, s: List[str]) -> None:"""Do not return anything, modify s in-place instead."""left = 0right = len(s)-1while left<right:s[left],s[right] = s[right],s[left]left +=1right -=1

1.2 看文章后的思路

补充几种我目前没有想到的思路,但是我觉得也非常可行

1.2.1 切片的方法
class Solution:def reverseString(self, s: List[str]) -> None:"""Do not return anything, modify s in-place instead."""s[:] = s[::-1]
1.2.2使用循环
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(n//2):s[i],s[n-i-1]=s[n-i-1],s[i]

1.3 本题小结

  1. 这种比较容易的题目,如果可以不用内置函数,尽可能的不要使用里面的内置函数,其实还有很多方法也可以解决
  2. 那就浅浅记录一下自己第一次同一道题用了两种方法啦

2 leetcode541. 反转字符串II

题目链接:541. 反转字符串 II - 力扣(LeetCode)

文章链接:代码随想录

视频链接:字符串操作进阶! | LeetCode:541. 反转字符串II_哔哩哔哩_bilibili

自己的思路:这道题是有思路,但是写的时候就很头疼,而且代码内的内容无法写通,有一种很乱的感觉,嗯,自己没写出来这道题

2.1 看视频后的思路

2.1.1 根据C++思路转换的代码

这道题和C++语法不一样的地方就是,字符串内部不能进行直接的反转操作,所以就需要先将其转换为一个列表,然后对列表2*k长度数据的前k个数据进行翻转

class Solution:def reverseStr(self, s: str, k: int) -> str:s_list = list(s)for i in range(0,len(s_list),2*k):if i+k<=len(s_list):s_list[i:i+k]= reversed(s_list[i:i+k])else:s_list[i:] = reversed(s_list[i:])return ''.join(s_list)
2.1.2 文章内代码的理解

虽然字符串内部不能直接进行一个迭代的操作,但是字符串对其进行一个切片,切片位置的返回是可以变换的,因此也可进行另一种编码

class Solution:def reverseStr(self, s: str, k: int) -> str:p = 0while p<len(s):p2 = p+ks = s[:p]+s[p:p2][::-1]+s[p2:len(s)]p +=2*kreturn s
2.1.3 反转封装成一个函数

这种方法挺巧妙的,将上一道题的代码进行一个函数的封装,然后调用,但是还是需要将字符串转换成列表的形式

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

2.3 本题小结

  1. 这道题的一个注意点就是在字符串中不能直接进行循环,需要将其先转换为列表的形式,在进行循环遍历
  2. 不必每次都是加一循环遍历,循环也可以是多种的形式

3 卡码网54. 替换数字

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

文章链接:替换数字 | 代码随想录

自己的思路:这道题想的就是循环遍历,判断其是不是数字,如果是的话我就进行一个列表中的替换,否则就是直接循环

3.1 代码思路

s = input()
s = list(s)
for i in range(len(s)):if s[i].isdigit():s[i] = 'number'
print(''.join(s))

3.2 本题小结

  1. 字符串判断其是否为数字的方式是s[i].isdigitit()即可
  2. 感觉这一块的知识点相对而言要简单一点,做起来就顺利很多

4 今日小结

  1. python中的字符串是不能直接进行迭代替换的,这里今天第一次尝试的时候就报错了
  2. range函数在使用的过程中,其内部是(start,end,step)
  3. 字符串的题对我而言稍微熟悉一些,希望接下来学习也会让我越来越轻松吧

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STAR: A Simple Training-free Approach for Recommendations using Large Language Models

目录概符号说明STARRetrievalRanking最后的结果Lee D., Kraft A., Jin L., Mehta N., Xu T., Hong L., Chi E. H. and Yi X. STAR: A simple training-free approach for recommendations using large language models. 2024.概 本文提出了一种融合语义/协同/时序信息的方法, 使…

最近做题小结

https://www.luogu.com.cn/problem/AT_abc373_e这道题是个二分 然后标答是两个二分 我用的树组+二分 需要对代数式进行拆分才能得到 我一开始看错题目了 看成大于等于他的票的人不多于M就行 然后就很简单 我觉得可以改编下这个题 很明显 最终前m个人一定当选 那么对于每一个人 …

前端ai工具v0使用配置

资料 ai工具Vo Installation - Tailwind CSS 以vue3 + sass为例,配置如下 安装tailwindcss npm install -D tailwindcss npx tailwindcss init安装依赖(可选) npm install lucide-vue-next更新 tailwind.config.js /** @type {import(tailwindcss).Config} */ module.export…

ERP开源项目Odoo

Odoo Odoo 的全称是 On Demand Open Object。名称反映了 Odoo 的起源和核心理念: •On Demand:代表 Odoo 作为一个按需使用的系统,可以根据企业的需要定制和部署各种模块。 •Open Object:强调 Odoo 是一个开源项目,允许用户访问和修改其源代码,以便根据具体业务需求进行…

2024.10.23 鲜花

基础数据结构进阶恋ひ恋ふ縁 诚、意地の悪い神の所业か? 奇迹?縁?袂触合う不思议 花ひとひら揺れて 不意に宿ってた うなじ解いてく春风 戯れはそこそこに 恋手ほどきしてくだしゃんせ 汤気にほんのり頬染て 夜风に愿ふ …いざ!!蝶と舞ひ花となりて 衣を乱して祓いましょう…

使用EasyExcel实现导出excel文件时生成多级下拉选

前言 公司有个需求本来只涉及到两个下拉选项,后面就想能不能实现多个下拉选,当然我这里说的多个下拉选是联动的,比如我省、地市、区县这种。 实现步骤 1、添加EasyExcel的Maven依赖<dependency><groupId>com.alibaba</groupId><artifactId>easyexce…

【运维自动化-作业平台】如何快速执行脚本和分发文件

脚本执行和文件分发是作业平台最基本、最核心的两个原子功能,主要分页面快速执行和作业里步骤引用,使用逻辑一样,一起来看看具体如何使用快速执行脚本 核心实现原理就是基于gse的命令管道,把脚本内容以WebPortal的方式透传到目标服务器进行执行,可以页面输入脚本也可以引用…

CMDB平台(进阶篇):企业级CMDB的高阶教程

企业IT架构日益复杂,配置项数量庞大且关系错综复杂。为了有效管理这些配置项,确保IT服务的稳定性和可靠性,配置管理数据库(Configuration Management Database,简称CMDB)系统应运而生。本文将深入探讨企业搭建CMDB系统所需具备的要素,以及实践路径,旨在为企业提供有益的…

U 盘

目录1 USB 大容量存储设备2 设备描述符3 字符串描述符4 配置描述符集合4.1 配置描述符4.2 接口描述符4.3 端点描述符6 类特殊请求6.1 Get Max LUN 请求6.2 Bulk-Only Mass Storage Reset 请求7 Bulk-Only 传输协议的数据流模型7.1 CBW 的结构7.2 CSW 的结构7.3 对批量数据的处理…

manim边做边学--复数平面

所谓复数平面,就是一种二维坐标系统,用于几何表示复数的场景,其中横轴代表实部,纵轴代表虚部。 每个点对应一个唯一的复数,反之亦然,这种表示方法使得复数的加法、乘法等运算可以通过直观的图形变换来理解。 ComplexPlane是Manim库中用于处理复数平面的类。 它不仅提供了…