zoukankan      html  css  js  c++  java
  • Leetcode_14【最长公共前缀】

    文章目录:

    • 题目
    • 脚本一及注释
      •   脚本一未加注释
    • 脚本一逻辑

    题目:

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

    如果不存在公共前缀,返回空字符串 ""。

    示例 1:

    输入: ["flower","flow","flight"]
    输出: "fl"
    示例 2:

    输入: ["dog","racecar","car"]
    输出: ""
    解释: 输入不存在公共前缀。
    说明:

    所有输入只包含小写字母 a-z 。


    脚本一及注释:【用时:28ms】

    class Solution:
        def longestCommonPrefix(self, strs: List[str]) -> str:      #题目定义的输入输出格式
            num1 = len(strs)                           #获取输入列表的元素个数
            target = ""                              #定义一个空变量,用于存储公共前缀
            flag = ""                               #定义一个标志位
            i = 0                                  #定义一个数值为0的变量,用于变量列表的元素,会随着循环自增
            try:                                  #使用try...except语句来处理输入空列表
                curl = strs[0]                          #若输入不是空列表则取列表中的第一个元素并赋值给curl变量
            except IndexError:                          #若输入为空列表,则返回空值
                return("")
            while True:                              #使用死循环进入循环判断
                for j in range(num1):                      #使用列表元素个数组成的数列对列表元素进行遍历
                    try:                              #此处使用try...except用来处理某些元素的字符个数过少,元素索引值超出范围的报错
                        if curl[i] == strs[j][i]:               #如果列表中的每个元素的第i个字符是一样的,则标志符为true
                            flag = 'true'        
                        else:                            #若不一样,则标识符为xx,且退出循环
                            flag = 'xx'
                            break
                    except IndexError:                      #若超出元素索引值范围
                        flag = 'xx'                        #标志位为xx
                        break                            #退出循环
                if flag == 'true':                         #退出for循环后,对标志位进行判断来决定下一步的处理 
                    target += curl[i]                       #若标志位为true则把字符增加到记录公共前缀变量中
                elif flag == 'xx':
                    break                              #若标志位为xx,则退出循环
                i += 1                                #每次for循环结束,i均自增1
            return(target)                              #返回记录公共前缀的变量
    #coding:gbk
    strs = ["abca","abc"]
    num1 = len(strs)
    target = ""
    flag = ""
    i = 0
    if strs[0]:
        curl = strs[0]
    else:
        print("")
    while True:
        for j in range(num1):
            try:
                if curl[i] == strs[j][i]:
                    flag = 'true'
                else:
                    flag = 'xx'
                    break
            except IndexError:
                flag = 'xx'
                break
        if flag == 'true':
            target += curl[i]
        elif flag == 'xx':
            break
        i += 1
    print(target)
    个人环境测试脚本
    class Solution:
        def longestCommonPrefix(self, strs: List[str]) -> str:
            num1 = len(strs)
            target = ""
            flag = ""
            i = 0
            try:
                curl = strs[0]
            except IndexError:
                return("")
            while True:
                for j in range(num1):
                    try:
                        if curl[i] == strs[j][i]:
                            flag = 'true'
                        else:
                            flag = 'xx'
                            break
                    except IndexError:
                        flag = 'xx'
                        break
                if flag == 'true':
                    target += curl[i]
                elif flag == 'xx':
                    break
                i += 1
            return(target)
    未加注释脚本

    脚本一逻辑:

    • 公共前缀必定每一个列表元素均拥有,则先获取一个出来作为所有列表元素的对比目标
    • try...except语句对异常情况的判断处理
    • 使用i自增和range()来遍历每个元素中的每个字符
  • 相关阅读:
    python中的单向链表实现
    Django中的Form表单验证
    顺序表的原理与python中的list类型
    HttpServletRequest get
    maven压缩js css
    left join inner join 区别
    Spark运行模式:cluster与client
    java 变量 final 小结
    eclipse svn 删除不了项目,合并不了问题
    hadoop HDFS常用文件操作命令 (转)
  • 原文地址:https://www.cnblogs.com/mailong/p/12008638.html
Copyright © 2011-2022 走看看