问题
编写一个函数来查找字符串数组中的最长公共前缀。
空字符串“”
输入: ["flower","flow","flight"]
输出: "fl"
输入: ["dog","racecar","car"]输出: ""
解释:输入列表不存在公共前缀,返回“”
解决思路
先找出最短的字符串,再遍历判断该字符串每个元素的前面索引位置的元素,跟其他字符串是不是一样,如果不是一样结束循环。
代码:
a=["flower","flow","flight"] # a=["dog","racecar","car"] cd,zcd=len(a),len(a[0]) for i in a[1:]: if zcd>len(i): zcd=len(i) # print(zcd) news="" for m in range(zcd): flag=False for i in range(cd-1):#2;取值0,1 if a[i][m]!=a[i+1][m]: flag=True break elif i==cd-2: news += a[i][m] if flag: break print(news)
运行结果
fl
升级版代码
写的过程中页去掉了很多冗余,代码运行效率也提升了
def get_commonstr(a): if len(a)==0: return "" cd,zcd=len(a),len(a[0]) news=""#公共字符串 for i in a[1:]: if zcd>len(i): zcd=len(i) #最短字符串长度 news=i #最短字符串 for m in range(zcd): flag=False #退出外部循环标志 for i in a:#2;取值0,1 if news[m]!=i[m]: #根据字符位置比较是否相等 news=news[:m] flag=True break if flag: break return news s1=["fliower","fliowe","flight"] s2=["dog","racecar","car"] if __name__=="__main__": print("结果:"+get_commonstr(s1)) print("结果:"+get_commonstr([]))