当前位置: 首页 > news >正文

蓝桥杯备赛-基础训练(四)字符串 day17

好久不见,今天开始继续更新,或许拿不了奖,但是希望记录自己学习的过程,如果感觉有收获的同学在下面多多评论说说我代码的缺陷,感谢大家!

1、反转字符串

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

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

你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

示例 1:
输入:["h","e","l","l","o"]
输出:["o","l","l","e","h"]

示例 2:
输入:["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]

思路|+代码:

这个题在python中可以用很简单的切片的方法来操作,只需要简单的几行代码就可以:

# 翻转字符串
s1 = str(input("请你输入你想要翻转的字符串:"))
print(s1)
s1 = s1[::-1]
print(s1)

其实这个操作很简单,主要就是头和尾进行交换,如果大家希望使用列表同时使用指针的话也是可以的,使用两个指针是比较好的情况:

s1 = list(str(input("请你输入你想要翻转的字符串:")))i = 0
j = len(s1)-1
print(j)
while i<=j:temp = s1[i]s1[i] = s1[j]s1[j] = tempi+=1j-=1
print(s1)

2、反转字符串II

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

如果剩余字符少于 k 个,则将剩余字符全部反转。

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

示例:

输入: s = "abcdefg", k = 2
输出: "bacdfeg"

思路:

判断剩余的总字数-有三种情况

每一种情况是不是可以对应不同的处理方式?

每一种处理方式其实可以写成一种固定的函数之类的

后来根据“代码随想录”上的思路,其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。

我们可以这样理解这个题目,

第一种标准是:如果满足2*k个数字的要求,就是翻转2*k个数字的前k个(翻转这前k个可以写一个专门的函数进行翻转,与上述反转字符串是一样的)

第二种标准是:如果剩下的字符数是大于k但是小于2*k的,那么我们就翻转这k个字符,其他字符就保持原样了(在这里有一点点歧义,我原来想的是,如果大于k小于2*的话,那经过这一轮的k个字符翻转以后,剩下的不就是<k了,我以为还需要再反转,但是我感觉题目的意思并不是这样的,后来看了卡哥的代码发现应该确实不是这样的)

第三种标准是:如果剩下的字符数是小于k的,那就是直接翻转

其实这个代码还是比较简单的,上述的三种情况梳理过后,其实直接调用写好的翻转函数就可以了

代码:
# 翻转字符串-2
from typing import Listdef reverse(s:List[str],i:int,j:int)->None:while i<=j:s[i],s[j] = s[j],s[i]i+=1j-=1s = list(str(input("请你输入你想要翻转的字符串:")))
print(s)
k = int(input("请你输入你希望的k值:"))
l = len(s)
i = 0
while i<=(l-1):if i+k < l:reverse(s,i,i+k-1)else:reverse(s,i,l-1)i += 2 * k
print(s)


http://www.mrgr.cn/news/94099.html

相关文章:

  • 【cocos creator】热更新
  • 算法手记1
  • 蓝桥杯练题顺序
  • 【菜鸟飞】Conda安装部署与vscode的结合使用
  • 使用pnpm管理前端项目依赖
  • Docker 入门与实战指南
  • 【eNSP实战】交换机配置端口隔离
  • P8683 [蓝桥杯 2019 省 B] 后缀表达式
  • 【ISP】对于ISP的关键算法补充
  • Ubuntu 24.04.2 允许 root 登录桌面、 ssh 远程、允许 Ubuntu 客户机与主机拖拽传递文件
  • Redis-缓存穿透击穿雪崩
  • 基于Harbor构建docker私有仓库
  • 静态路由实验
  • 【性能测试入门_01性能测试jmeter基础实操场景详解】
  • 使用 React 和 Ant Design 处理 Excel 和 CSV 文件
  • Linux内核实时机制19 - RT调度器2 - 更新时间 update_curr_rt
  • MySQL中有哪些索引
  • 学习C2CRS Ⅱ (Contrastive Learning Pretraining)
  • MoonSharp 文档三
  • LINUX网络基础 [九] - IP协议