码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode_14【最长公共前缀】

时间:2019-12-09 01:41:04      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:解释   exce   异常情况   for循环   超出   str   open   nbsp   range   

文章目录:

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

题目:

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

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

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

 

 

Leetcode_14【最长公共前缀】

标签:解释   exce   异常情况   for循环   超出   str   open   nbsp   range   

原文地址:https://www.cnblogs.com/mailong/p/12008638.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!