题目

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。

  • 示例 1:
    输入: ["flower","flow","flight"]
    输出: "fl"
  • 示例 2:
    输入: ["dog","racecar","car"]
    输出: ""
    解释: 输入不存在公共前缀。
    说明: 所有输入只包含小写字母 a-z 。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
res = ''
# 排除特殊情况
if len(strs) == 0:
return res
if len(strs) == 1:
return strs[0]
min_length = len(strs[0])
# 找到最短的字符串,确定循环次数
for i in range(1, len(strs)):
if len(strs[i]) < min_length:
min_length = len(strs[i])

for i in range(min_length):
tmp_char = strs[0][i]
# 用每个字符串的第i个元素和第0个字符串的第i个元素对比
for j in range(1, len(strs)):
# 不等则清除tmp_char并结束
if strs[j][i] != tmp_char:
tmp_char = ""
if tmp_char == "":
break
res += tmp_char
return res

自己写的太烂了,cp个范例。。。