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