文章
8
粉丝
216
获赞
20
访问
67.0k
s.substr(p, n)
返回从s的下标p开始的n个字符组成的字符串
s.replace(p0, len0, s2, pos, len)
删除p0开始的len0个字符,然后在p0处插入串s2中从pos开始的len个字符
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
while(cin>>s){
int n;
cin >> n;
while(n--){
string cmd;//命令
cin >> cmd;
if(cmd[0]=='0'){
int start=cmd[1]-'0';
int len=cmd[2]-'0';
//进行反转
reverse(s.begin()+start, s.begin()+start+len);
}
if(cmd[0]=='1'){
int start=cmd[1]-'0';
int len=cmd[2]-'0';
//得到要进行替换的字符串
//从命令字符串cmd下标为3处获得长度为cmd.length()-3的字符串
string replaceStr=cmd.substr(3, cmd.length()-3);
//进行替换
//用replaceStr从0开始的replaceStr.length()个字符替换s中从start开始的start+len-1个字符
s.replace(start,start+len-1,replaceStr,0,replaceStr.length());
}
cout << s ...
登录后发布评论
这里应该是 s.replace(start,len,replaceStr,0,replaceStr.length());
第二个参数是长度len吧,改过之后才由33%到100%