3342:字符串操作 题解

原题

看到 CSDN 上这道题的题解都比较冗长,在这里给出精简代码,

这道题是一道不错的 string 类函数练手题,需要注意的细节不少

AC code:

#include <iostream>
#include <string>
#include <cstdlib>
#include <sstream>
using namespace std;
#define a_i atoi(get().c_str())

string a[25],get();int n=0;

inline string add(){
    string s1=get(),s2=get();
    if(s1.size()>5||s2.size()>5)return s1+s2;
    int a1=atoi(s1.c_str()),a2=atoi(s2.c_str());
    string s3=to_string(a1),s4=to_string(a2);
    if(s1==s3&&s2==s4)return to_string(a1+a2);
    return s1+s2;
}

inline string copy(){int x=a_i,pos=a_i,len=a_i;return a[x].substr(pos,len);}

inline string find(){
    string s=get();int x=a_i;
    return a[x].find(s)==string::npos?to_string((int)s.length()):to_string(a[x].find(s));
}

inline string rfind(){
    string s=get();int x=a_i;
    return a[x].rfind(s)==string::npos?to_string((int)s.length()):to_string(a[x].rfind(s));
}

inline void insert(){string s=get();a[a_i].insert(a_i,s);}

inline void reset(){string s=get();a[a_i]=s;}

inline void print(){cout<<a[a_i]<<'\n';}

inline void printall(){for(int i=1;i<=n;i++)cout<<a[i]<<'\n';}

inline string get(){
    string s;cin>>s;
    if(s=="add")return add();
    else if(s=="copy")return copy();
    else if(s=="find")return find();
    else if(s=="rfind")return rfind();
    else if(s=="insert")insert();
    else if(s=="reset")reset();
    else if(s=="print")print();
    else if(s=="printall")printall();
    else return s;return "";
}

signed main(){
    cin>>n;for(int i=1;i<=n;i++)cin>>a[i];
    while(get()!="over");
    return 0;
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值