分类:字符串- 公共前缀
题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
解题思路1:
Python 特性,取每一个单词的同一位置的字母,看是否相同。
class Solution: def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ res = "" for tmp in zip(*strs): tmp_set = set(tmp) if len(tmp_set) == 1: res += tmp[0] else: break return res
解题思路2 :取最长和最短的单词,比较他们的前缀
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if not strs: return ("") str1 = min(strs) str2 = max(strs) for i in range(len(str1)): if str1[i] != str2[i]: return str1[:i] return str1
解题思路3:取一个单词 s
,和后面单词比较,看 s
与每个单词相同的最长前缀是多少!遍历所有单词。
class Solution: def longestCommonPrefix(self, s: List[str]) -> str: if not s: return "" res = s[0] i = 1 while i < len(s): while s[i].find(res) != 0: res = res[0:len(res)-1] i += 1 return res
解题思路4:按字典排序数组,比较第一个,和最后一个单词,有多少前缀相同。
class Solution: def longestCommonPrefix(self, s: List[str]) -> str: if not s: return "" s.sort() n = len(s) a = s[0] b = s[n-1] res = "" for i in range(len(a)): if i < len(b) and a[i] == b[i]: res += a[i] else: break return res