LeetCode 初级 - 最长公共前缀

最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

分析

因为是公共前缀,我们可以对所有字符串进行排序,这样我们只需要比较首尾两个字符串的公共前缀即可。
当然这个方法理解起来很容易,但是性能不是最优的

代码

class Solution {
        public String longestCommonPrefix(String[] strs) {
            if(strs.length == 0){ return "";}
            strs = bubbleSort(strs);
            String stStr = strs[0];
            String finalStr = strs[strs.length-1];
            int length = (finalStr.length()>strs[0].length())?strs[0].length():finalStr.length();

            for (int i=0; iif(stStr.charAt(i) == finalStr.charAt(i)){
                    i++;
                }else{
                    if (i == 0){
                        return "";
                    }else{
                        return stStr.substring(0,i);
                    }
                }
            }
            return stStr;
        }
        public static String[] bubbleSort(String[] args){//冒泡排序算法   
            String temp;
            for(int i=0;ifor(int j=i+1;jif (args[i].compareTo(args[j])>0){   
                           temp=args[i];   
                           args[i]=args[j];   
                           args[j]=temp;   
                           }   
                }  
           }  
           return args;  
        } 
    }

你可能感兴趣的:(算法,LeetCode,刷题之路)