题目描述
求最长公共前缀
(暴力枚举)
思路
纯模拟 求 a b c的公共后缀 可以先求 a b的后缀 在和c求后缀
C++ 代码
#include<bits/stdc++.h>
using namespace std;
string f(string a,string b)
{
string ans="";
for(int i=a.length()-1,j=b.length()-1;i>=0&&j>=0;i--,j--)
if(a[i]==b[j])
ans+=a[i];
else{
break;
}
return ans;
}
int main()
{
int n;
string a[201];
while(cin>>n,n)
{
for(int i=0;i<n;i++)
cin>>a[i];
string s=f(a[0],a[1]);
for(int i=2;i<n;i++)
{
reverse(s.begin(),s.end());//S从f函数里面出来和原本的位置是相反的,所以需要反转下
s=f(s,a[i]);
}
reverse(s.begin(),s.end());
cout<<s<<endl;
}
}
要是遇到输入abbses,abcdes,这样不会出错吗?ans=abes
你好,我发现是我忘记加break跳出了0.0.感谢指正
请问这个不会超时吗?
string s=f(a[0],a[1]); 这一句是什么意思呢?可以解释一下吗?
你好,我自定义了一个函数f 它的功能是求传入参数字符串a,b的公共后缀,返回值也是string类型.参数传入a[0],a[1]也是为了先初始化处理下s 方便和之后的字符串做公共后缀查找
早安哥分治做一下呀!
早安哥tql