题目链接:P2957 [USACO09OCT]Barn Echoes G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目大意:
两个字符串找有相同的子字符串的个数
思路:
字符串里find()和substr();find函数就是查找substr函数表示被截取的字符串或字符串表达式;形式是substr(开始位置(一般是0),要截取的长度),同一个字符串从前往后和从后往前都找一遍,和另一个比较
坑点:
没有吧
代码:
#include<bits/stdc++.h>
using namespace std;
string a,b;
int main(){
cin>>a>>b; if(a.size()>b.size())swap(a,b);//如果a比b长,先调换位置,避免substr时访问越界
for(int x=a.size()-1;x>=0;x--){//x代表回声的长度
string prea=a.substr(0,x),sufa=a.substr(a.size()-x,x);
string preb=b.substr(0,x),sufb=b.substr(b.size()-x,x);
if(prea==sufb||preb==sufa)cout<<x<<endl,exit(0);
//如果一个字符串的前缀等于另一个字符串的后缀,输出答案即可
} return 0;
}
总结:
又一个知识点,继续学吧