给定n个字符串,求它们的公共前缀。
注意这个问题与LCS的区别,公共前缀要求是从第一个字符开始的接连的最长串,而LCS是可以是字符串里最长的那一公共部分。
解题思路:
①我们要先找出n个字符串里最短的那个的长度是多长,以那个作为基准。
②然后对每个字符串进行比较每一位是否一样,如果存在一样的,那么我们输出该字符,直到遇到了不一样的,结束循环。
代码如下:
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int main(){
int n;
cin>>n;
int minLength = 51;
char s[n][50];
for(int i=0;i<n;i++){
cin>>s[i];
minLength = min(minLength,int(strlen(s[i])));
}
for(int i=0;i<minLength;i++){
bool isSame = true;
for(int j=1;j<n;j++){
if(s[j][i]!=s[0][i]){
isSame = false;
break;
}
}
if(isSame){
cout<<s[0][i];
}
else{
break;
}
}
cout<<endl;
return 0;
}