7-4 接话茬 (20分)

小CC最喜欢的就是接话茬,别人说一句,小CC就会接着他的话尾巴继续说下去,然后告诉他这是“顶针”修辞手法,活活将人气死。小XX也喜欢接话茬,每天都要与小CC比较技艺。然而无论是谁,都会被他们活活气死,因此两人总是难决胜负。后来小CC和小XX一起上了厦门大学,学习了校选课《接话茬数学原理与杠精的自我修养》,他们决定对两人的接话茬水平进行定量评估。
他们约定比赛规则如下,随机找一个倒霉的路人,路人说一句话,他们一起来接,他们接的话的前缀可以作为路人说的话后缀的长度就是那句话的水平。比如,别人说“abbbaabbc”,小CC接了一句“abbcefagd”,他所说的话的前缀“abbc”正是路人所说的话的后缀,长度为4,那么小CC的水平就是4;如果小XX说的是“xbbcadf”,无法构成路人所说的话的后缀,因此水平只有0。
现在,他们的比赛正式开始,由你来写一个程序充当裁判。
输入格式:
共三行,每行是一句话,长度均不超过10​6​​。
第一行是路人说的话。第二行是小CC说的话。第三行是小XX说的话。
输出格式:
仅一行,输出小CC和小XX接的话的水平,以空格分割,行末没有多余空格,以换行结束。
输入样例:
abbaabbc
abbc
xbb

输出样例:
4 0

#include<iostream>
#include<string>
using namespace std;
int main(){
    string str1;
    string str2;
    string str3;
    cin>>str1;
    cin>>str2;
    cin>>str3;
    int min1 = str1.size()>str2.size()?str2.size():str1.size(); //记录路人与CC的较小值
    int min2 = str1.size()>str3.size()?str3.size():str1.size();//记录路人与XX的较小值
    int p = 0;
    int q = 0;
    for(int i = min1;i>0;i--){
        string a = str2.substr(0,i);//截取路人长度为i的话
        string b = str1.substr((str1.size()-i),i);//截取CC长度为i的话
        if(a == b){
            p = i;
            break;
        }
        else{
            continue;
        }
    }
    for(int i = min2;i>0;i--){     //同上
        string a = str3.substr(0,i);
        string b = str1.substr((str1.size()-i),i);
        if(a == b){
            q = i;
            break;
        }
        else{
            continue;
        }
    }
    cout<<p<<" "<<q<<endl;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超好的小白

没体验过打赏,能让我体验一次吗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值