编写一个函数来查找字符串数组中最长的公共前缀字符串。
比如:["aaaa","aa","a","addsaf"]
输出:"a"
比如:["aaaa","aa","a","addsaf"]
输出:"a"
C语言
#include<stdio.h>
#include<string.h>
void *longestCommonPrefix(char **strs,int size,char *common){
if(size==0) return NULL;
int i=0,j=0,min=0x7fffffff;
for(i=0;i<size;i++){
min = min>strlen(*(strs+i))?strlen(*(strs+i)):min;
}
printf("min=%d\n",min);
for(i=0;i<min;i++){
for(j=1;j<size;j++){
if(*(*(strs)+i) != *(*(strs+j)+i)){
return strncpy(common,*strs,i);
}
}
}
return strncpy(common,*strs,min);
}
int main(){
char *ch[10] = {"aaaa","ab","aaa","aaabbbb"};
int size = 4;
char common[10] ={0};
char *com = longestCommonPrefix(ch,size,common);
printf("%s\n",com);
return 0;
}
Java语言
public class Solution {
// "aac","aa","aacd","aaa"
public String longestCommonPrefix1(String[] strs){
int len = strs.length;
if(len==0) return "";
int min = Integer.MAX_VALUE;
for(String str:strs){
min = Math.min(min,str.length());
}
if(min == 0) return "";
for(int i=0;i<min;i++){
for(int j=1;j<len;j++){
if(strs[0].charAt(i) != strs[j].charAt(i)){
return strs[0].substring(0,i);
}
}
}
return strs[0].substring(0,min);
}
public static void main(String[] args) {
Solution solution = new Solution();
String[] strings = new String[]{"aac","aa","aacd","aaa"};
System.out.println(solution.longestCommonPrefix1(strings));
}