Longest Common Prefix
Total Accepted: 61429 Total Submissions: 241098Write a function to find the longest common prefix string amongst an array of strings.
这道题很简单几乎没有什么可说的,我就是从首到尾挨个比较每个字符串是否相等,这种简单粗暴的方法,也0ms过了,所以这道题的意义是什么我不懂。对于特殊条件要单独判断一下,例如:没有字符串传入,只传入1个字符串等。
下面是完整程序代码:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <vector>
using namespace std;
char* longestCommonPrefix(char** strs, int strsSize)
{
if(strsSize == 0)
return "";
if(strsSize == 1)
return strs[0];
int index = 0;
char *p,*q;
bool f_end = false;
while(!f_end)
{
for(int i = 0; i < strsSize - 1; i++)
{
p = strs[i];
q = strs[i+1];
if(p[index] == '\0' || q[index] == '\0')
{
f_end = true;
break;
}
if(p[index] != q[index])
{
f_end = true;
break;
}
}
index++;
}
strs[0][index-1] = '\0';
return strs[0];
}
int main()
{
int numString;
cout<<"Input number of strings:"<<endl;
cin>>numString;
char **StringList = (char**)malloc(sizeof(char*) * numString);
for(int i = 0; i < numString; i++)
{
StringList[i] = (char*)malloc(sizeof(char) * 30);
scanf("%s", StringList[i]);
}
cout<<longestCommonPrefix(StringList, numString)<<endl;
return 0;
}