首页 > 试题广场 >

字符串操作

[编程题]字符串操作
  • 热度指数:11497 时间限制: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().split())
s = list(input().strip())
for _ in range(m):
    a,b,c,d=input().split()
    for i in range(int(a)-1, int(b)):
        if s[i] == c:
           s[i] = d
print(''.join(s))

发表于 2025-09-29 15:11:35 回复(0)
# 输入两个数,第二个是操作次数 a
_, a = map(int, input().split())

# 输入初始字符串
aaa = input()

# 转为列表,方便修改单个字符
aaa_list = list(aaa)

for _ in range(a):
    # 输入 q, w, e, r (注意:q 和 w 是 1-based 的起始和结束位置,e 和 r 是字符)
    q, w, e, r = input().split()
    left = int(q) - 1     # 转为 0-based
    right = int(w) - 1    # 转为 0-based
    
    # 遍历区间 [left, right],逐个检查并替换
    for j in range(left, right + 1):  # 注意:包含 right,所以是 right + 1
        if aaa_list[j] == e:
            aaa_list[j] = r

# 最后将列表转回字符串输出
print(''.join(aaa_list))

发表于 2025-09-05 21:57:46 回复(0)
n, m = map(int, input().split())
s = input()
for _ in range(m):
    a = ''
    l, r, c1, c2 = input().split()
    for i in range(n):
        if (i in range(int(l)-1, int(r))) and s[i] == c1:
            a += c2
        else:
            a += s[i]
    s = a
print(a)
发表于 2025-08-19 16:47:06 回复(0)
n,m=input().split()
s=list(input())
for __ in range(int(m)):
    l,r,c1,c2=input().split()
    for i in range(int(l)-1,int(r)):
        if s[i]==c1:
            s[i]=c2    
print(''.join(s))
发表于 2025-08-12 13:47:50 回复(0)
# 读取数据
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)