Problem:
Write a function to find the longest common prefix string amongst an array of strings.
思路:
1. 纵向遍历法。遍历字符串list strs中,每个str的相同index。如果相同则继续,如果不同则跳出循环。遍历完了strs中i个str之后,index自增1,继续重新遍历。时间复杂度O(n)
2. 横向遍历法。在list strs中,两两遍历字符串str,找出他们最大的相同前缀。然后再以该前缀继续与下一个字符串str比较,找出其最大相同前缀,以此类推。时间复杂度O(n)
3. 分治法。把字符串list分成两半,用递归的方法分别求出两半的longest common prefix。时间复杂度O(n)
Solution:
# -*- coding: utf-8 -*-
"""
Created on Thu Feb 02 15:18:04 2017
@author: liangsht
"""
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
i = 0
j = 0
slen = len(strs)
s = ""
if slen == 0:
return s
else:
firstlen = len(strs[0])
while j < firstlen:
if j >= len(strs[i]):
break
if i == 0:
tmpstr = strs[0][j]
if tmpstr != strs[i][j]:
break
i += 1
if i >= slen:
i = 0
j += 1
s = s + tmpstr
return s