编写一个函数来查找字符串数组中最长的公共前缀字符串。
比如:["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)); }