zoukankan      html  css  js  c++  java
  • 最长公共前缀

    编写一个函数来查找字符串数组中的最长公共前缀

    如果不存在公共前缀,返回空字符串 “”。

    示例 1:
    
    输入: ["flower","flow","flight"]
    输出: "fl"
    示例 2:
    
    输入: ["dog","racecar","car"]
    输出: ""
    解释: 输入不存在公共前缀。
    说明:
    

    所有输入只包含小写字母 a-z 。

    python3 zip()函数
    在这里插入图片描述
    在这里插入图片描述

    思路 1:
    Python 特性,取每一个单词的同一位置的字母,看是否相同。

    思路 2:
    取一个单词 s,和后面单词比较,看 s 与每个单词相同的最长前缀是多少!遍历所有单词

    思路 3:
    按字典排序数组,比较第一个,和最后一个单词,有多少前缀相同。

    代码:
    思路一:

    class Solution:
        def longestCommonPrefix(self, strs):
            """
            :type strs: List[str]
            :rtype: str
            """
            res = ""
            for tmp in zip(*strs):
                tmp_set = set(tmp) # f,f,f
                if len(tmp_set) == 1:
                    res += tmp[0]  #存入
                else:
                    break
            return res
    

    思路二:

    class Solution:
        def longestCommonPrefix(self, s: List[str]) -> str:
            if not s:
                return ""
            res = s[0]  #取到第一个单词
            i = 1
            while i < len(s):  # len(s)为所有单词的个数
                while s[i].find(res) != 0:
                    res = res[0:len(res)-1]  #缩小res的前缀长度
                i += 1
            return res
    

    思路三:

    class Solution:
        def longestCommonPrefix(self, s: List[str]) -> str:
            if not s:
                return ""
            s.sort()
            n = len(s)
            a = s[0]
            b = s[n-1]
            res = ""
            for i in range(len(a)):
                if i < len(b) and a[i] == b[i]:
                    res += a[i]
                else:
                    break
            return res
    
  • 相关阅读:
    eclipse对项目Working Sets整理分类
    word中visio只显示边框,不显示内容解决
    使用WebStorm运行vue项目
    如何提高你的学习速度-超链接式学习法
    SQL中的join连接查询
    TCP的三次握手
    Tomcat 实现热部署
    Linux下软件设成系统服务运行
    Redis服务器搭建
    nginx.conf完整配置实例
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781572.html
Copyright © 2011-2022 走看看