美文网首页
Leetcode14. Longest Common Prefi

Leetcode14. Longest Common Prefi

作者: Persistence2 | 来源:发表于2017-02-21 21:09 被阅读29次

Write a function to find the longest common prefix string amongst an array of strings.

1. 解法一

思路

对字符串数组进行排序,比较第一个字符串和最后一个字符串的公共前缀

代码

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        if len(strs) == 0:
            return ""
        strs.sort()
        for i in range(min(len(strs[0]), len(strs[-1]))):
            if strs[0][i] != strs[-1][i]:
                return strs[0][0:i]
        return strs[0]      

解法二

思路

从长度入手,利用二分法不断寻找最大的公共前缀的长度。

public class Solution{
  public String longestCommonPrefix(String[] strs){
    if(strs == null || strs.length == 0){
      return "";
    }
    int minLen = Integer.MAX_VALUE;
    for (String str:strs) {
      minLen = Math.min(minLen, str.length());
    }
    int low = 0;
    int high = minLen;
    while (low <= high) {
      int mid = (low + high) / 2;
      if (isPrefix(strs, mid)) {
        low = mid + 1;
      }else{
        high = mid - 1;
      }
    }
    return strs[0].substring(0, (low+high)/2);
  }
  private boolean isPrefix(String[] strs, int len){
    String str1 = strs[0].substring(0, len);
    for(int i= 1; i < strs.length; i++){
      if(!strs[i].startsWith(str1)){
        return false;
      }
    }
    return true; 
  }
}

相关文章

网友评论

      本文标题:Leetcode14. Longest Common Prefi

      本文链接:https://www.haomeiwen.com/subject/vcnuwttx.html