4.Leetcode14 LongestCommon Prefix 笔记

1:题目描述

Write a function to find the longest common prefix string amongst an array of strings.

找出字符串数组中最长的公共前缀

2:题目分析

先设定第一个字符串为最长前缀,依次向后比较,将‘最长前缀’一点点截取。但题目比较坑的地方是没说能输入空字符串,所以在测试之后又要加上考虑空字符串这种情况,否则会提示IndexError

3:解题过程

 1 class Solution(object):
 2     def longestCommonPrefix(self, strs):
 3         """
 4         :type strs: List[str]
 5         :rtype: str
 6         """
 7         strs_len=len(strs)#获得列表长度
 8         if "" in strs or strs_len==0 :#踢出空列表
 9             return ""
10         elif strs_len==1:#假如只有一个元素就不要比较了
11             return strs[0]
12         else:
13             i=0
14             temp_str=strs[0] #设置‘最长前缀’为第一个
15             temp_len=len(strs[0])#获取字符串长度
16             while i<strs_len:#遍历列表
17                 j=0
18                 MIN=min(temp_len,len(strs[i]))#设置MIN,防止检索时忽略‘最长前缀’比当前字符串长的情况
19                 while j<MIN:
20                     temp_str=temp_str[:MIN]
21                     if strs[i][j]!=temp_str[j]:
22                         temp_str=strs[i][:j]#截取字符串
23                         break
24                     j=j+1
25                 temp_len=len(temp_str)#这个地方看似不大重要,但因为之前我把他放在了上面的循环中,ε=(´ο`*)))唉
26                 i=i+1
27             if len(temp_str)==0:#判断前缀是否为空
28                 return ""
29             else:
30                 return temp_str

 

4:解题感悟

①python的确有很多方便的内置函数,但不能因此总想走捷径

②如果发现肉眼看不出的错误,就老老实实的去插入断点,节省感情

转载于:https://www.cnblogs.com/19991201xiao/p/8400297.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值