zoukankan      html  css  js  c++  java
  • LeetCode Easy: 14. Longest Common Prefix

    参考博客:http://blog.csdn.net/nxhyd/article/details/71566780

    一、题目

    Write a function to find the longest common prefix string amongst an array of strings.

    找公共最大前缀

    二、思路

    这里提供两种思路,分别对应下面两组代码:

    1、暴力方法;外循环,遍历整个字符串组,首先找到字符串数组中那个最短的字符串的长度(请注意这里并不是找最短字符串),内循环,相当于在最短字符串长度范围内(因为公共前缀的长度肯定不可能超过最短字符串的长度),循环遍历此长度范围内的每个子串的前缀。这个的复杂度简单计算下O(len(strs)*lenth)

    2、首先(任意)选取第一个作为公共最大前缀字符串,然后循环遍历每个子串,按条件做长度减一操作。复杂度为O(len(strs))

    三、代码如下:

    #coding:utf-8
    import time
    def longestCommonPrefix(strs):
        """
        :type strs: List[str]
        :rtype: str
        """
    
        if strs == []:
            return ''
        else:
            for i in range(1, len(strs)):
                l1 = len(strs[0])
                l2 = len(strs[i])
                if l1 > l2:
                    lenth = l2
                else:
                    lenth = l1   #lenth表示的是字符串数组中最短的那个字符
                strs[0] = strs[0][0:lenth]  #表示公共前缀
                for j in range(lenth):
                    if strs[0][j] != strs[i][j]:
                        strs[0] = strs[0][0:j]
                        break
            print(strs[0])
            return strs[0]
    
    def longestCommonPrefix2(strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        if strs == []:
            return ''
        prefix = strs[0]
        for i in range(1,len(strs)):
            if not prefix:
                return ''
            else:
                while prefix not in strs[i][:len(prefix)] and len(prefix)>0:
                    prefix = prefix[:len(prefix)-1]
        return prefix
    
    if __name__ == '__main__':
        a = ['abc','abd','abcd']
        starttime = time.clock()
        #longestCommonPrefix2(a)
        longestCommonPrefix2(a)
        elapsed = (time.clock()-starttime)
        print(elapsed)
        print("this programe run %d ms"%(elapsed))
    

      

    既然无论如何时间都会过去,为什么不选择做些有意义的事情呢
  • 相关阅读:
    java final计算
    浅析Java中的final关键字
    easyui
    Java:类与继承
    java中&和&&
    XML
    JSON
    SQL
    selenium
    Metasploit
  • 原文地址:https://www.cnblogs.com/xiaodongsuibi/p/8605328.html
Copyright © 2011-2022 走看看