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

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

今天咱们继续字符串

1、替换数字

题目:

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。

例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。

对于输入字符串 "a5b",函数应该将其转换为 "anumberb"

输入:一个字符串 s,s 仅包含小写字母和数字字符。

输出:打印一个新的字符串,其中每个数字字符都被替换为了number

样例输入:a1b2c3

样例输出:anumberbnumbercnumber

数据范围:1 <= s.length < 10000。

思路:

学习了代码随想录卡哥的思路,我们主要是用双指针的方法:

具体思路大家可以看我下列的代码,注释比较多大家应该能看得懂,并且附上我自己的思考思路图:

代码:
# 替换数字
# 给定一个字符串 s,它包含小写字母和数字字符,
# 请编写一个函数,将字符串中的字母字符保持不变,
# 而将每个数字字符替换为number。

from typing import List
def charu_zimu(s:List[str],i,l):
    add_s = ['r','e','b','m','u','n']
    k = l+4
    u = l-1
    j=0
    s.extend([''] * 5)  # 在列表末尾添加6个空的字符串
    # 这里可能代码撰写的思路大家需要知道一下,
    # 因为如果取k=i,相当于是大家在k=i的时候还要执行这个代码
    # 而我的代码思路并不想在k=i的时候执行
    while u>i:
        #主要是要向后移动,先扩展这个list的大小
        s[k]=s[u]
        u-=1
        k-=1
    while k>=i:
        s[k]=add_s[j]
        k-=1
        j+=1


s = list(str(input("请输入一串混合了数字和英文小写字母的字符串:")))
l = len(s)
i = 0
while i<l:
    if s[i] and 48<=ord(s[i])<=57:
        charu_zimu(s,i,l)
        l = len(s)
        i+=5
    i+=1
print(s)

2、翻转字符串里的单词

题目:

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:
输入: "the sky is blue"
输出: "blue is sky the"

示例 2:
输入: "  hello world!  "
输出: "world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

示例 3:
输入: "a good   example"
输出: "example good a"
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个

思路:

在没有看卡哥的思想之前,我根据我自己的思路给大家讲讲:

首先,输入的这个语句里面各个单词之间是有空格的

我想到的是使用split来分开各个单词

然后将顺序翻转过来,最后我们再用joint进行拼接,事实证明这个思路是可行的

代码:
judge = 1
while judge:
    a = int(input("如果你想继续程序请输入1,若不想则输入任意值:"))
    if a == 1:
        s = input("请输入一句话(英文),并且每一个单词之间需要输入一个空格:")
        words = s.split()
        print(words)
        x = words[::-1]  # 使用切片的方法
        # 切片的方法不仅仅适用于列表,同样可以适用于字符串 元组 数组Numpy数组
        print(x)
        # 然后我们可以适用join的方法将单词重新组合成字符串,单词之间用一个空格来分割
        output_str = " ".join(x)
        print(output_str)
    else:
        judge = 0

3、右旋字符串

题目:

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。

例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。

输入:输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。第二行为字符串 s,代表需要旋转的字符串。

输出:输出共一行,为进行了右旋转操作后的字符串。

思路:

字符串的题希望大家都能自己画画图

为了让本题更有意义,提升一下本题难度:不能申请额外空间,只能在本串上操作

我觉得卡哥的思路非常清晰,这里就使用他的思路和绘图,大家应该很好理解:

代码:

代码咱就先不看卡哥的,自己写一下(先是把整个代码倒序过来,然后再进行后续的处理)

k = int(input("请输入翻转的个数:"))
s = list(str(input("请输入你要进行右翻转的字符串:")))
s_1 = s[::-1]#还是使用切片
i = 0
j = k-1
while i<=j:
    s_1[i],s_1[j] = s_1[j],s_1[i]#直接交换位置
    i+=1
    j-=1

l = len(s)
i = k
j = l-1
while i<=j:
    s_1[i],s_1[j] = s_1[j],s_1[i]
    i+=1
    j-=1
print(s_1)

上半部分就到这里为止,大家一起加油

相关文章:

  • C语言:计算并输出三个整数的最大值 并对三个数排序
  • 【Synchronized】不同的使用场景和案例
  • XMI(XML Metadata Interchange)和XML之间的关系
  • 色板在数据可视化中的创新应用
  • Linux ALSA 驱动核心知识点解析
  • GPU加速的国密SM2算法实现
  • css中实现border距离视图左右两侧有距离
  • QT创建项目(项目模板、构建系统、选择类、构建套件)
  • 好玩的谷歌浏览器插件-自定义谷歌浏览器光标皮肤插件-Chrome 的自定义光标
  • java如何在linux服务器创建文件excel并把循环插入每一行的后端查出来的数据,每天新建一个excel带时间的
  • CentOS7下安装MongoDB
  • 2025年 AI 技术商业趋势白皮书解析:Google Cloud 视角——多 Agent 系统奠定未来基础
  • PyTorch 系列教程:使用CNN实现图像分类
  • 民宿管理系统(springboot+vue+沙箱支付+高德第三方地图)
  • 异或和之和 第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 A 组
  • STM32U575RIT6单片机(二)
  • Google Filament 渲染引擎(2)-Backend 核心类介绍
  • 麒麟系统上配置本地大模型交互界面Chatbox
  • MySQL -- 数据库基础
  • SpringBoot使用Logback日志框架与综合实例
  • 卡尼领导的加拿大自由党在联邦众议院选举中获胜
  • 港理大公布多项AI+医工成果,助港建设国际医疗创新枢纽
  • 淮安四韵·名城新章: 网络名人领略“运河之都”魅力
  • 亮剑浦江丨上海网信部门处罚一批医疗服务类互联网企业,三大类问题值得关注
  • 金融创新破局记:中小微企业转型背后的金融力量
  • 上海出台灵活就业人员公积金新政:不限户籍、提取自由,6月起施行