Leetcode 3043. Find the Length of the Longest Common Prefix

  • Leetcode 3043. Find the Length of the Longest Common Prefix
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3043. Find the Length of the Longest Common Prefix

1. 解题思路

这一题其实暴力求解也问题不大,只要把一个数列当中所有数字所能构成的prefix全部记录下来,然后在另一个arr当中进行查找就行。

不过,这里一个更为优雅的实现是使用Trie树的方式,我们用一个数组来构造一个Trie树,然后遍历另一个数组,找到每一个数字在Trie树当中的最长公共前缀,然后进行返回即可。

两者本质上是完全一样的,不过后者思路和实现上更加优雅一些。

2. 代码实现

给出python代码实现如下:

class Trie:
    def __init__(self):
        self.trie = {}

    def add_word(self, word):
        trie = self.trie
        for c in word:
            trie = trie.setdefault(c, {})
        trie["eos"] = word
        return

    def find_prefix(self, word):
        trie = self.trie
        length = 0
        for c in word:
            if c not in trie:
                break
            trie = trie[c]
            length += 1
        return length


class Solution:
    def longestCommonPrefix(self, arr1: List[int], arr2: List[int]) -> int:
        trie = Trie()
        for x in arr1:
            trie.add_word(str(x))
        
        return max(trie.find_prefix(str(x)) for x in arr2)

提交代码评测得到:耗时818ms,占用内存36.6MB。

你可能感兴趣的:(leetcode笔记,leetcode,3043,leetcode周赛385,leetcode,medium,Trie树,leetcode题解)