來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/longest-common-prefix
編寫一個函數來查找字符串數組中的最長公共前綴。如果不存在公共前綴,返回空字符串 ""。
示例 1:
輸入: ["flower","flow","flight"]
輸出: "fl"
示例 2:
輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。
char * longestCommonPrefix(char ** strs, int strsSize){
//printf("strsSize:%d\n",strsSize);
if(strsSize == 0){
return "";
}
int i = 0,j = 0,len = 0,flag = 0;
int min_len = strlen(strs[0]);
char *tmp_str = strs[0];
char map[100] = {0};
memset(map,0,100);
for(i = 1;i < strsSize ;i++){
if(min_len > strlen(strs[i])){
min_len = strlen(strs[i]);
tmp_str = strs[i];
}
}
//printf("min_len:%d tmp_str:%s\n",min_len,tmp_str);
char *buf = (char*)malloc(min_len + 1);
if(!buf){
return NULL;
}
memset(buf,0,min_len + 1);
for(i = 0;i < min_len;i++){
char ch = tmp_str[i];
for(j = 0;j < strsSize;j++){
if(ch == strs[j][i]){
flag++;
}else{
break;
}
}
if(flag == strsSize){
buf[len++] = ch;
flag = 0;
}
else{
break;
}
}
return buf;
}