rt,代码如下:
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int n,x,k,l,r;
string s,sx,si;
int main()
{
cin>>s;
l=read();
cin>>sx;
k=s.size();
for(int j=l;j<k;j++)si[j-l]=s[j];
for(int j=l;j<k+sx.size();j++)s[j]=sx[j-l];
k=k+sx.size();//for(int j=0;j<k;j++)cout<<s[j];cout<<"-----\n";
//
for(int j=k;j<k+si.size();j++)s[j]=si[j-k];
k=k+si.size();
//cout<<si.size()<<"----\n";
for(int j=0;j<k;j++)cout<<s[j];
cout<<endl;
return 0;
}
这个代码希望得到的效果是:
输入一个字符串 s,第一个字符位置为0。接着输入一个数 l 和一个字符串 sx,要求将 sx 插入到第 l 个字符之前,输出操作完成后的新字符串。
额,其实就是要做P5734 【深基6.例6】文字处理软件 这道题的第三个操作而已。
当前问题:
输入:Luogu 3 guGUgu
正确输出:LuoguGUgugu
实际输出:LuoguGUgu
也就是说代码并没有将原字符串 s 的后面部分gu放回去。
但是尝试将变量 k 得知进行改变,无果。
所以希望大佬告诉我一个可行的修改代码的方式