## [LeetCode][python3]0014. Longest Common Prefix

Start the journey

N2I -2020.03.18

- My first Solution

`class Solution:`

def longestCommonPrefix(self, strs: List[str]) -> str:

if strs:

min_len=len(min(strs,key = len))

for i in range(min_len):

c=min(strs,key = len)[i]

for s in strs:

if s[i]!=c:

if i==0:

return ""

return min(strs,key = len)[0:i]

break

return min(strs,key = len)

else:

return ""

Explanation:

A normal way to think about this problem. The solution compares chars from the smallest length string of `strs`

to other strings in `strs`

. The `for`

loop will stop when someone diff from the compare.

2. A better Solution

`class Solution:`

def longestCommonPrefix(self, strs: List[str]) -> str:

if not strs:return ""

m,M,i=min(strs),max(strs),0

for i in range (min(len(m),len(M))):

if m[i]!=M[i]:break

else:

i=i+1

return m[:i]

Explanation:

The solution takes advantage from the “Comparative of String objects”. The biggest different in sequence will appear in the comparison of `min(strs)`

and `max(strs)`

. That is why the solution only compares those two strings in list. It is same idea when you check out the first vocabulary and the last vocabulary in your English Dictionary and you will confirm every vocabulary between them will share the same prefix if the first and the last vocabulary shares them.