Longest Common Prefix(找出所有字符串的最长公共前缀):
Write a function to find the longest commonprefix string amongst an array of strings.
Subscribe to see which companies asked thisquestion.
例如:ABCDC ABDFRE ABCJFJ ABCJKY AB 最大公共前缀为:AB
/*
File name:一组字符串最大公共前缀.cpp
Author:杨柳
Date:2017/5/11
IDE:DEV-c++
*/
#include<stdio.h>
#include<string.h>
#include<iostream>
#define M 20
using namespace std;
int len=0,count=0;
class Solution {
public:
string LongestCommonPrefix(string str1,string str2 ){ //求两个字符串的最大公共前缀
string prefix=""; //设初始值为空
char a[100],b[100];
strncpy(b,str2.c_str(),str2.length());//字符串str2转换成字符数组保存在a[]数组中
for(int i = 0; i < str1.length();i++) {
strncpy(a,str1.c_str(),str1.length()); //字符串str1转换成字符数组保存在b[]数组中
// strcpy(a,s);
if(a[i]!=b[i])//若第i位不相等,跳出循环
break;
else
prefix+=a[i];//相等的字符加入到字符串prefix中
}
return prefix;
}
} ;
int main(){
Solution sl;
string strs[M];//一组字符串数组
string str;
cout<<"请输入一个组字符串数组的个数:"<<endl;
cin>>len;
cout<<"请输入一个组字符串数组:"<<endl;
for(int i=0;i<len;i++) {
cin>>strs[i];
}
str=strs[0];
for(int i=len-1;i>0;i--){ //调用求两个字符串前缀的函数,将结果作为新的参数,不断调用函数,直到求出最终结果
str=sl.LongestCommonPrefix(strs[i],str);
cout<<"调用过程显示"<<endl<<str<<endl;
}
cout<<endl<<"这组字符串的最长公共前缀为:"<<endl;
cout<<str<<endl;
return 0;
}