题目:https://sunnywhy.com/sfbj/3/6/83
https://sunnywhy.com/sfbj/3/6/83
题目描述
给定n个字符串,求它们的公共前缀。
输入描述
第一行为一个正整数n(2≤n≤20),表示字符串的个数。
接下来n行,每行一个字符串(仅由大小写字母组成),每个字符串的长度不超过50。
输出描述
输出n个字符串的公共前缀。如果没有公共前缀,那么输出空行。
思路:
设置双重循环
外循环:
从前往后循环每一个可以当作前缀的字母
内循环:
将每一行字符串循环,由外层循环来确定每行字符串对于这个字母是否符合要求,如果不符合要求则直接退出,答案即为退出前上一个符合要求的字母(将每个字母与第一个字符串的字母进行对比即可)
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,flag;
string s[N];
int main()
{
cin>>n;
int w=0x3f3f3f;
for(int i=0;i<n;i++)
{
cin>>s[i];
int len=s[i].size();
w=min(w,len);
}
int i=0,j=0;
for(i=0;i<w;i++)
{
for(j=0;j<n;j++)
{
if(s[j][i]!=s[0][i])
{
flag=1;
break;
}
}
if(flag)break;
}
if(i!=0)
{
for(int k=0;k<=i-1;k++)cout<<s[0][k];
}
else cout<<endl;
return 0;
}