• 每日leetcode-数组-14. 最长公共前缀


    分类:字符串- 公共前缀

    题目描述:

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

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

    解题思路1:

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

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

    解题思路2 :取最长和最短的单词,比较他们的前缀

    class Solution:
        def longestCommonPrefix(self, strs: List[str]) -> str:
            if not strs:
                return ("")
            str1 = min(strs)
            str2 = max(strs)
            for i in range(len(str1)):
                if str1[i] != str2[i]:
                    return str1[:i]
            return str1

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

    class Solution:
        def longestCommonPrefix(self, s: List[str]) -> str:
            if not s:
                return ""
            res = s[0]
            i = 1
            while i < len(s):
                while s[i].find(res) != 0:
                    res = res[0:len(res)-1]
                i += 1
            return res

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

    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
  • 相关阅读:
    c3p0使用
    连接池介绍
    内存角度探寻C++面向对象 之 继承、多态
    java多线程总结
    SQL关联查询总结
    java内存管理总结
    自制操作系统 (六) 分割编译与中断处理
    C++内联函数
    C++函数指针
    springmvc下实现登录验证码功能
  • 原文地址:https://www.cnblogs.com/LLLLgR/p/14891269.html
Copyright © 2020-2023  润新知