字符串最长公共前缀

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

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

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

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

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

解法一:水平扫描。先找到第一个字符串和第二个字符串的最长公共前缀,然后再将这个前缀与下一个字符串对比,找出它们的最长公共前缀...以此类推直到最后一个字符串。
Python代码:

class Solution(object):
  def longestCommonPrefix(self, strs):
      """
      :type strs: List[str]
      :rtype: str
      """

      if(len(strs) == 0):
          return ""
      result = strs[0]
      for i in range (1,len(strs)):
          while strs[i].find(result) != 0:
              result = result[0:len(result)-1]
              if(len(result) == 0):
                  return ""
      return result

解法二:以单个字符为单位,先拿出第一个字符串的第一个字符,如果有不一样的,说明无公共前缀;如果所有字符串第一个字符都是一样的 ,那么继续对比第二个字符...直到有出现不一样的或者第一个字符串的每一个字符都遍历完。
Python代码:

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

你可能感兴趣的:(字符串最长公共前缀)