问题描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
解题思路:
首先要对存在的三种特殊情况进行处理::
1、 二维数组为空,直接输出空;
2、 二维数组只有一行,直接输出该二维数组;
3、 二维数组有多行,但第一行即第一个单词为空,则公共前缀也为空,直接输出空;
对于剩下的情况,都是通过循环对第一个单词进行对比 ,代码如下:
char * longestCommonPrefix(char ** strs, int strsSize){
if(strsSize == 0){
return "";
}
if(strsSize == 1){
return *strs;
}
if(**strs=='\0'){
return *strs;
}
char *a=(char*)malloc(sizeof(char)*(201));
int tag = 0;
for(int i = 0; i < strlen(strs[0])&&tag == 0;i++){
tag = 0;
for(int j = 1;j<strsSize;j++){
if(*(*strs+i) == *(*(strs+j)+i)){
}else
{
tag = 1;
break;
}
}
if(tag == 1){
a[i] ='\0';
break;
}else{
a[i] = *(*strs+i);
a[i+1] = '\0';
}
}
//printf("%d",tag);
return a;
}