Leetcode17

Longest Common Prefix

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

If there is no common prefix, return an empty string “”.

Example 1:

Input: ["flower","flow","flight"]
Output: "fl"

Example 2:

Input: ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.

Note:

All given inputs are in lowercase letters a-z.

最长公共子前缀,给出一个字符串数组,求最长公共子前缀,所给出的字串都在 a-z 中。

第一反应是给 brute force 哈哈哈哈,后来想了下,用 字典树 再取出没有子节点的前 n 个元素

接下来的问题就是如何用 python 实现字典树了,用 py 的 dict

{
	'f': {
		'l': {
			'o': {
				'w': {
					'e': {
						'r': {
							'end': 'end'
						}
					},
					'end': 'end'
				}
			}
		}
	}
}

下面是代码

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """

        common_prefix = ''
        root = {}
        for word in strs:
            current = root
            for letter in word:
                current = current.setdefault(letter, {})

            current['end'] = 'end'
        
        while 'end' not in root.keys():
            if len(root.items()) == 1:
                for k,v in root.items():
                    common_prefix += k
                    root = v
            else:
                break

        return common_prefix

Trie

写了将近一个小时,知道用 trie 树,但是中间的逻辑部分总是不知道怎么实现,比如说 trie 的实现,如何向下遍历 dict,如何判断公共子序列是否到头了,最终还是看别人的实现

最近想到了职业规划的问题,目前的状况是在做大数据可视化,之前是 PHP,研究的都不是很深,之前的想法是做自由职业,自己开发产品,然后靠维护产品生存,目前不知道做什么比较好,正在想做小游戏,目前前端能力欠缺正在补充。个人觉得一项技术研究到 90% 就 ok 了,再往下走就会得不偿失。还有就目前而言,会多项能熟练使用的技术优势大于会一项很精深的技术。

人若无名便可专心练剑


Recent posts

Leetcode30

ElasticSearch 系列(一)

Mysql 分区表实践

Kafka 入门

Hugo 安装


Related posts

Leetcode30

Leetcode29

Leetcode28

Leetcode27

Leetcode26

Leetcode25

Leetcode24


Archives

2020 (11)
2019 (56)