首页 > 试题广场 >

字符串操作

[编程题]字符串操作
  • 热度指数:8888 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定长度为 n 的只含小写字母的字符串 s,以及正整数 m 次操作。
\hspace{15pt}每次操作给定两个整数 \ell,r 和两个小写字母 c_1,c_2;将字符串 s 在区间 [\ell,r] 内的所有字符 c_1 替换为 c_2
\hspace{15pt}按顺序执行完所有操作后,输出最终的字符串。

输入描述:
\hspace{15pt}在一行输入两个整数 n,m \left(1 \leqq n,m \leqq 100\right)
\hspace{15pt}接下来一行输入一个只含小写字母的字符串 s,长度为 n
\hspace{15pt}再接下来 m 行,每行输入两个整数 \ell,r 和两个字符 c_1,c_2,用空格分隔,其中 1 \leqq \ell \leqq r \leqq nc_1,c_2 为小写字母。


输出描述:
\hspace{15pt}输出一个只含小写字母的字符串,表示执行完所有操作后的最终字符串。
示例1

输入

5 3
wxhak
3 3 h x
1 5 x a
1 3 w g

输出

gaaak

说明

\hspace{8pt}\bullet\,初始字符串为 `wxhak`; 
\hspace{8pt}\bullet\,第 1 次操作将位置 3 上的 `h` 替换为 `x`,得到 `wxxak`;
\hspace{8pt}\bullet\,第 2 次操作将位置 1 至 5 的 `x` 替换为 `a`,得到 `waaak`;
\hspace{8pt}\bullet\,第 3 次操作将位置 1 至 3 的 `w` 替换为 `g`,得到 `gaaak`。

备注:

# 读取数据
n,m = map(int,input().strip().split())

s = list(input().strip())

# 进行三次操作
for _ in range(m):
    star,end,s1,s2 = input().strip().split(" ")
    for i in range(int(star)-1, int(end)):
        if s[i] == str(s1):
            s[i] = str(s2)

print("".join(s))

发表于 2025-06-08 15:40:25 回复(0)
列表,逐行比对并替换
m,n=map(int,input().split())
s=list(input())

for i in range(n):
    a = list(input().split())
    for j in range(int(a[0])-1,int(a[1])):
        if s[j] == a[2]:
            s[j] = a[3]

print("".join(x for x in s))


编辑于 2024-02-12 14:36:08 回复(0)