zoukankan      html  css  js  c++  java
  • python3面试-查找字符串数组中的最长公共前缀

    问题

    编写一个函数来查找字符串数组中的最长公共前缀。

    空字符串“”

    输入: ["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([]))
    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    通过Xshell连接CentOS虚拟机
    Linux学习笔记
    JAVA学习摘要
    4k 对齐,你准备好了吗?
    图片种子制作方法,利用图片上传附件
    利用京东服务免费打造属于自己的网站
    PE制作实录 —— 补充说明
    PE制作实录 —— 定义我的 PE 工具箱
    浏览器 — 各项基准测试
    Windows 8.1 归档 —— Step 3 软件的选择与安装
  • 原文地址:https://www.cnblogs.com/canglongdao/p/14881553.html
Copyright © 2011-2022 走看看