如何在PYTHON里解决最长公共前缀问题
1、打开JUPYTER NOTEBOOK,新建一个空白的PY文档。

2、strs = ["flower","flow","flight"]
for str in strs:
print(len(str), end=" ")
遍历一下长度,发现长度不均。

3、d = {}
for str in strs:
d[str] = len(str)
d
可能会有些同学想用字典来存储。但是这样不好比较。

4、strs = ["flower","flow","flight"]
d = {}
for str in strs:
d[len(str)] = str
d
这样反过来存储更不好比较,要注意了。

5、strs = ["flower","flow","flight"]
strs_num = []
for str in strs:
strs_num.append(len(str))
print(min(strs_num))
print(strs_num.index(min(strs_num)))
我们可以找到最短的那个数据,然后和其他的相比较。但是这样不好比较。

6、strs = ["flower","flow","flight"]
result = ""
for i in range(len(strs[0])):
for j in range(1, len(strs)):
if strs[0][i] == strs[j][i]:
result = result + strs[0][i]
print(result)
我们可以用两个遍历来对比,但是这里少了一个条件。

7、strs = ["flower","flow","flight"]
result = ""
for i in range(len(strs[0])):
for j in range(1, len(strs)):
if i > len(strs[j]) or strs[0][i] != strs[j][i]:
print(result)
print(result)
注意就是i的长度问题,这里大于还是不够的,因为长度是从1开始计算的。

8、strs = ["flower","flow","flight"]
result = ""
for i in range(len(strs[0])):
for j in range(1, len(strs)):
if i >= len(strs[j]) or strs[0][i] != strs[j][i]:
print(result)
result += strs[0][i]
print(result)
这样设置就比较合理了。

9、strs = ["flower","flow","flight"]
result = ""
if strs == "":
print(result)
for i in range(len(strs[0])):
for j in range(1, len(strs)):
if i >= len(strs[j]) or strs[0][i] != strs[j][i]:
print(result)
result += strs[0][i]
print(result)
如果怕用户什么都没输入,要这样定义。

10、strs = ["flower","flow","flight"]
result = ""
if len(strs) == 0:
print(result)
for i in range(len(strs[0])):
for j in range(1, len(strs)):
if i >= len(strs[j]) or strs[0][i] != strs[j][i]:
print(result)
result += strs[0][i]
print(result)
这样写就比较清晰了。
