Python学习笔记6-最长公共前缀
题目:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
解题思路
很容易想到的是我们将第一个字符串A和第二个字符串B求公共前缀,然后在和第三个字符串C求公共前缀,最终得到最长公共前缀。解题重点是求两个字符串求公共前缀。比较常见的想法是如果这两个字符串的第一个字符相同则记录第一个字符,第二个相同则增加第二个,直到出现不同的字符串。但是在这个思路上有一个难点,我们在和C串求前缀的时候,会重新从第一个字符开始记录,增加不必要的计算。第二个思路就是将A串作为前缀,如果与B串前面字符不同,则去掉最后一个字符重新和B串匹配,直到字符完全匹配B串,在python中,s = s[:-1]很容易去掉最后一个字符。
代码
代码解释:strs[i].find(s)!=0说明要么strs[i]中没有s要么就是strs[i]中有s但是不是在前缀。
find()方法:
运行结果