c++点1RE,点2 3 4WA,点5AC,求调

P5734 【深基6.例6】文字处理软件

yuan2795 @ 2024-08-22 08:44:45


#include<bits/stdc++.h>
using namespace std;
int q;string s,str;
string er(int m,int n)

{
    string v;
    for(int i=m;i<m+n;i++)
    {
        v[i-m]=s[i];
    }
    return v;
}
string san(int m,string jj)
{
    string v;
    for(int i=0;i<m;i++)
    {
        v[i]=s[i];
    }
    for(int i=0;i<jj.size();i++)
    {
        v[i+m]=jj[i];
    }
    for(int i=m;i<s.size();i++)
    {
        v[i+jj.size()]=s[i];
    }
    return v;
}
int si(string m,int k)

{
    int cnt=-1;
    for(int i=0;i<s.size()-k+1;i++)
    {
        int j=0;
        int flag=0;
        while(s[i]==m[j]&&j<k)
        {
            flag=1;
            i++;
            j++;
        }
        if(j==k)
        {
            cnt=i-j;
            break;
        }
        if(flag==1)
        {
            i--;
        }
    }
    return cnt;
}
int main()
{
    cin>>q>>s;
    for(int i=1;i<=q;i++)
    {
        int x;
        cin>>x;
        if(x==1)
        {
            cin>>str;
            s=s+str;
            cout<<s<<endl;
        }
        if(x==2)
        {
            int a,b;
            cin>>a>>b;
            s=er(a,b);
            cout<<s<<endl;
        }
        if(x==3)
        {
            int j;
            cin>>j>>str;
            s=san(j,str);
            cout<<s<<endl;
        }
        else{
            cin>>str;
            int len=str.size();
            int mt=si(str,len);
            cout<<mt<<endl;
        }
    }
    return 0;
}

by hexuchen @ 2024-08-22 08:59:54

@yuan2795 改了你的代码,求关注

#include<bits/stdc++.h>
using namespace std;
int q;string s,str;
string er(int m,int n)

{
    string v="";
    for(int i=m;i<m+n;i++)
    {
        v+=s[i]; //改成加法
    }
    return v;
}
string san(int m,string jj)
{
    string v;
    for(int i=0;i<m;i++)
    {
        v+=s[i]; //全部改成加法
    }
    for(int i=0;i<jj.size();i++)
    {
        v+=jj[i];
    }
    for(int i=m;i<s.size();i++)
    {
        v+=s[i];
    }
    return v;
}
int si(string m,int k)

{
    int cnt=-1;
    for(int i=0;i<s.size()-k+1;i++)
    {
        int j=0;
        int flag=0;
        while(s[i]==m[j]&&j<k)
        {
            flag=1;
            i++;
            j++;
        }
        if(j==k)
        {
            cnt=i-j;
            break;
        }
        if(flag==1)
        {
            i--;
        }
    }
    return cnt;
}
int main()
{
    cin>>q>>s;
    for(int i=1;i<=q;i++)
    {
        int x;
        cin>>x;
        if(x==1)
        {
            cin>>str;
            s=s+str;
            cout<<s<<endl;
        }
        if(x==2)
        {
            int a,b;
            cin>>a>>b;
            s=er(a,b);
            cout<<s<<endl;
        }
        if(x==3)
        {
            int j;
            cin>>j>>str;
            s=san(j,str);
            cout<<s<<endl;
        }
        if(x==4){ //不要用else
            cin>>str;
            int len=str.size();
            int mt=si(str,len);
            cout<<mt<<endl;
        }
    }
    return 0;
}

by osu_rice222 @ 2024-08-22 09:00:11

可以用库函数啊啊啊!!!

#include <bits/stdc++.h>
using namespace std;
int main(){
    int q,a,b;
    string s,str;
    cin>>q>>s;
    while(q--){
        int op;
        cin>>op; 
        if(op==1) {
            cin>>str;
            s+=str; 
            cout<<s<<'\n';
        }
        else if(op==2){ 
            cin>>a>>b;
            s=s.substr(a,b);
            cout<<s<<'\n';
        }
        else if(op==3){ 
            cin>>a>>str;
            s.insert(a,str);
            cout<<s<<'\n';
        }else{  
            cin>>str;
            if(s.find(str)==string::npos)
                cout<<-1<<'\n';
            else 
                cout<<s.find(str)<<'\n';
        }
    }
    return 0;
}

by yuan2795 @ 2024-08-22 09:02:29

@hexuchen 已关


by yuan2795 @ 2024-08-22 09:03:11

@hexuchen 已关注


|