Leetcode 14 最长公共前缀

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







猜你喜欢

转载自blog.csdn.net/czj1992czj/article/details/79908886
今日推荐