编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
#include <stdio.h>
/**
思路:首先将字一个字符串作为ans,然后依次与每一个字符串比较更新result,若某一趟途中result为空,直接返回,最后得到的result即为所求
拓展:c语言表示字符串数组两种方式
字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示
第一种表示方式固定了每个字符串的最大大小。第二种没有字符串的大小限制。
’\0’是判定字符数组结束的标识,表示这串字符到结尾了。
在字符数组中’\0’是占一个位置的!
*/
char * longestCommonPrefix(char ** strs, int strsSize){
//判空
if(strsSize == 0){
return "";
}
char * result = strs[0]; //将第一个字符串作为基准
int i ,j=0;
///外层循环控制层字符串数组遍历
for(i=1;i<strsSize;++i){
///内层循环控制字符串遍历
j=0;
for(;result[j]!='\0' && strs[i][j]!='\0';j++){
///确保基准字符串以及后续字符串没到结尾
if(result[j]!=strs[i][j]){
break;
}
}
result[j]='\0';
if(result == NULL){
return "";
}
}
return result;
printf("%s\n",result);
}
int main(void)
{
char *arr[] ={"flower","flow","flight"};
char * temp = longestCommonPrefix(arr,3);
printf("%s\n",temp);
return 0;
}