问题标题: 酷町堂:1163 插入字符串并删除

0
0
已解决
李宜和
李宜和
高级启示者
高级启示者

这题我笑了

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;

}

于是:


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)

0
王文博
王文博
缔造者之神
缔造者之神

核心:

e=l.size();
if(a>e)//判断a是否大于e
{
    l=l+g;
}
else
{
    l.insert(a-1,g);
}
l.erase(b-1,c);
cout<<l;

输入顺序提示:l,g,a,b,c

我要回答