[Leetcode] 14. Longest Common Prefix

来源:互联网 发布:windows刷mac os 编辑:程序博客网 时间:2024/05/22 09:45

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
0 0
原创粉丝点击