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()来遍历每个元素中的每个字符

 

 

posted @ 2019-12-08 23:27  弈虫  阅读(177)  评论(0编辑  收藏  举报