[题目描述]
给定长度为 n 的只有小写字母的字符串 s ,进行 m 次操作,每次将 [l,r] 范围内所有 c1 字符改成 c2 ,输出操作完的字符串。
输入格式:
第一行两个数 n , m ,
第二行一个字符串 s ,
之后 m 行,每行两个数 l r 两个字符 c1 c2 。
输出格式:
输出一行一个字符串。
样例输入
5 3
wxhak 3 3 h x 1 5 x a 1 3 w g
样例输出
gaaak
数据范围
对于 100% 的数据,保证 1≤n,m≤100 。
样例说明
第一次修改后为wxxak,
第二次修改后为waaak,
第三次修改后为gaaak。
来源/分类(难度系数:三星)
字符串 模拟
完整代码展示:
m,n=map(int,input().split())
strip=list(input())
list_1=[]
for i in range(0,n):
list_2=list(map(str,input().split()))
list_1.append(list_2)
for i in range(0,len(list_1)):
c1=eval(list_1[i][0])-1
c2=eval(list_1[i][1])
list_3=strip[c1:c2]
list_4=strip[0:c1]
list_5=strip[c2::]
for j in range(0,len(list_3)):
if list_3[j]==list_1[i][2]:
list_3[j]=list_1[i][3]
strip=list_4+list_3+list_5
sum=""
for i in range(0,len(strip)):
sum+=strip[i]
print(sum)
代码解释:
“m,n=map(int,input().split())
strip=list(input()) ”,让用户输入字符串长度m和需要对字符串进行操作的次数n。接着让用户输入字符串并将其储存在列表strip中。
“list_1=[]
for i in range(0,n):
list_2=list(map(str,input().split()))
list_1.append(list_2) ”,建立一个空列表list_1,循环n次:让用户输入字符串每次操作的位置及需要替换的字符,替换字符,将其储存在列表list_2中,最后将list_2添加进列表list_1中。
“for i in range(0,len(list_1)):
c1=eval(list_1[i][0])-1
c2=eval(list_1[i][1])
list_3=strip[c1:c2]
list_4=strip[0:c1]
list_5=strip[c2::]
for j in range(0,len(list_3)):
if list_3[j]==list_1[i][2]:
list_3[j]=list_1[i][3]
strip=list_4+list_3+list_5 ”,遍历list_1中元素,按照元素要求对列表strip中元素其进行操作。
“sum=""
for i in range(0,len(strip)):
sum+=strip[i]
print(sum) ”,建立一个空字符串sum,依次连接操作结束后列表strip中的元素。打印sum的最中结果。
运行效果展示:
(声明:以上内容均为原创)