给你一个长度为??的字符串??,由大写和小写英文字母组成。
对字符串??进行??次修改。由两个整数和一个字符组成的元组??表示?-th 修改?,如下所示。
在操作后打印。
第一行输入一个整数,表示字符串的长度。
第二行输入字符串。
第三行输入一个整数,表示修改的次数。
接下来行,每行输入三个内容,为修改类型,为对应的修改参数。
输出一行,包含一个字符串,为修改后的字符串。
样例输入 1
复制10
HELLOWORLD
3
2 1 a
1 1 H
1 6 W
样例输出 1
复制HelloWorld
样例输入 2
复制14
IloveCPlusPlus
10
2 0 a
1 10 G
1 1 m
1 2 E
1 1 F
2 2 a
1 7 b
3 5 a
3 0 a
1 5 i
样例输出 2
复制FEOViCBLUGPLUS
_____________________________________________________________________________
一开始暴力0分啊,小瞧语法基础了
好家伙这时间范围和数据大小困了我114514毫秒,优化了20分钟才过
呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜
写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?
_____________________________________________________________________________
?
#include <bits/stdc++.h>
using namespace std;
long long n,ans,Max,m,flag=0;
int a[1000005],b[1000005],x[1000005];
char c[1000005],y[1000005];
string s;
int main(){
cin>>n;
cin>>s;
cin>>m;
for(int i=1;i<=m;i++){
cin>>a[i]>>b[i]>>c[i];
if(a[i]==1){
s[b[i]-1]=c[i];
ans++;
x[ans]=b[i]-1;
y[ans]=c[i];
}
else if(a[i]==2)flag=1,ans=0;
else if(a[i]==3)flag=2,ans=0;
}
if(flag==1)
for(int j=0;j<n;j++)
if(s[j]>=65&&s[j]<=90)s[j]=(char)(s[j]+32);
if(flag==2)
for(int j=0;j<n;j++)
if(s[j]>=97&&s[j]<=122)s[j]=(char)(s[j]-32);
for(int i=1;i<=ans;i++)s[x[i]]=y[i];
for(int i=0;i<n;i++)cout<<s[i];
}