高级启示者
这题我笑了
:
1163 插入字符串并删除
经验值:0 时间限制:1000毫秒
题目描述 Description
将B字符串插到A字符串中第M个位置上,再删除**作后的A字符串第X个位置开始的Y个字符。(若M大于A字符串的长度,则将B字符串在A字符串的最后一个字符后插入。)
输入描述 Input Description
输入三行,第一行为字符串A,第二行为字符串B,第三行为三个整数,分别为M,X,Y。
输出描述 Output Description
输出一行,为经过变换之后的字符串。
样例输入 Sample Input
12345 6789 3 3 2
样例输出 Sample Output
1289345
TLE50分
#include<bits/stdc++.h>
using namespace std;
string a,b,c;
int cnt1,cnt2,n,minn=0x3f3f3f3f,maxn=-0x3f3f3f3f,m,x,y;
int main(){
getline(cin,a);
getline(cin,b);
cin>>n>>x>>y;
c=a.insert(n-1,b);
c.erase(x-1,y);
cout<<c;
return 0;
}
于是:
初级天翼
这不是超时,是数组越界,RE
还有,这个代码不对,若m>a,b串要加到a串后面,你没有判断
刚被惩罚,不懂:伪代码=整段?
思路:先输入,判断a串长度是否小于m,如果m<a.size(),插入、删除,注意的是你插入、删除的起始下标应该减一,所以插入是(m-1,b),删除是(x-1,y),否则插入是(s.size(),b),删除是(x-1,y),最后输出就可AC
望采纳~
潘艺博在2021-08-08 15:40:55追加了内容
写错了,第二个插入是(a.size(),b)