Leetcode 14 Longest Common Prefix
来源:互联网 发布:淘宝二级页面全屏 编辑:程序博客网 时间:2024/06/09 14:41
14.Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.
题目要求返回一个最长公共前缀,先看代码:
class Solution(object): def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ length = strs.__len__() if length < 1: return "" if length == 1: return strs[0] strs.sort() prefix = strs[0] target = strs[length - 1] result = "" for i in range(prefix.__len__()): if prefix[i] == target[i]: result += prefix[i] else: break return result
- 因为只是要求返回最长的公共前缀,因此可以先对列表进行排序
- 排序后,可以将列表中的第一个元素作为前缀的基准,将其与列表中最后一个字符串进行比较即可
以下是在submission中看到的答案:
class Solution(object): def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ prefix = '' for x in zip(*strs): bag = set(x); if len(bag) == 1: prefix += bag.pop(); else: break; return prefix;
- 这个解法巧妙的运用了zip函数,对strs进行拆解,然后丢入zip中
- zip结果的个数与strs中,最短的字符串的长度是相等的
- 使用set函数将zip对象转化为set
- 若zip从每个字符串中取得的字母是一样的,则bag的大小一定为1,这也就是将zip对象转为set的意义所在。bag的长度如果为1,那么说明这个字母一定是列表中所有字符中都有的,也就是说这个字母就是公共前缀的一部分
- 循环zip函数返回的每个结果并转为set,直到set的长度不为1为止
当然,使用resuce函数也是一个做法:
class Solution(object): def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ def lcp(str1, str2): i = 0 while i < min(len(str1), len(str2)) and str1[i] == str2[i]: i += 1 return str1[:i] return reduce(lcp, strs) if strs else ''
阅读全文
0 0
- LeetCode 14: Longest Common Prefix
- LeetCode(14) Longest Common Prefix
- LeetCode 14 Longest Common Prefix
- [leetcode 14] Longest Common Prefix
- leetcode 14-Longest Common Prefix
- [leetcode 14] Longest Common Prefix
- [Leetcode] 14 - Longest Common Prefix
- LeetCode | #14 Longest Common Prefix
- leetcode.14----------Longest Common Prefix
- leetCode #14 Longest Common Prefix
- leetcode-14 Longest Common Prefix
- leetcode 14 Longest Common Prefix
- Longest Common Prefix - LeetCode 14
- LeetCode 14 - Longest Common Prefix
- leetcode 14 -- Longest Common Prefix
- Longest Common Prefix leetcode 14
- Leetcode#14 Longest Common Prefix
- leetcode-14Longest Common Prefix
- RecyclerView的使用
- 关于Java实现朴素贝叶斯算法
- 从零开始学习OpenCL开发(九)深入API
- NOIP[靶形数独]深度优先搜索
- CSS 相对定位与绝对定位
- Leetcode 14 Longest Common Prefix
- 向jre中添加安全证书
- 八(1) 2
- Android 防止多次点击
- 从零开始学习OpenCL开发(十)深入API
- LeetCode学习(5)Shortest Palindrome(最短回文串)
- centos6.9编译安装httpd2.4(2)
- 【算法】【Greedy】Queue Reconstruction by Height
- linux shell 学习