• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

nunca

但行好事 莫问前程
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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))

  

既然无论如何时间都会过去,为什么不选择做些有意义的事情呢

posted on 2018-03-19 22:04  乐晓东随笔  阅读(108)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3