14. 最长公共前缀
题目:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
说明:
所有输入只包含小写字母 a-z
。
思路:既然给我的是字符串数组,那我要比较的就不是两个元素了,所以考虑把这些元素的元素都一个一个取出来,放进空字符串里面,然后用字符串的count方法数是不是l个,不是就退出,是就把这个元素存进答案字符串里面,记住每一次循环后,字符串要还原为空字符串。另外,需要做初始准备工作,为了避免越界情况,先找出这些字符串最短的那个,进行这个长度的循环取出。
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if(strs==[]): return '' l=len(strs) a='' ans=' ' min=len(strs[0]) for j in range(l): ml=len(strs[j]) if(min>ml): min=ml for b in range(min): for i in range(l): a+=strs[i][b] if(a.count(strs[0][b])!=l): break ans+=strs[0][b] a='' answer=ans.lstrip() return answer
这里为什么用answer去获取呢。。。因为lstrip是返回值而不是更改原字符串。。
另外两个空字符串不能都命名,所以一个用了带空格的,因为python会指向同一个对象。。
执行用时 : 56 ms, 在Longest Common Prefix的Python3提交中击败了70.16% 的用户
内存消耗 : 13.1 MB, 在Longest Common Prefix的Python3提交中击败了78.41% 的用户
学习一下别人的方法:
利用python的max()和min(),在Python里字符串是可以比较的,按照ascII值排,举例abb, aba,abac,最大为abb,最小为aba。所以只需要比较最大最小的公共前缀就是整个数组的公共前缀
def longestCommonPrefix(self, strs): if not strs: return "" s1 = min(strs) s2 = max(strs) for i,x in enumerate(s1): if x != s2[i]: return s2[:i] return s1
服气。。。
这里回忆一下enumerate的用法,i表示下标,x表示字符。
posted on 2019-05-06 11:59 imyourterminal 阅读(137) 评论(0) 编辑 收藏 举报