14、最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
class Solution(object):
def longestCommonPrefix(self, strs):
result = ''
if len(strs) > 0:
for i, each in enumerate(strs[0]):
for string in strs[1:]:
if i < len(string) and each == string[i]:
continue
else:
return result
result += each
return result
else:
return result
# longest-common-prefix
class Solution(object):
def longestCommonPrefix(self, strs):
if len(strs) == 0 or strs[0] == '':
return ''
if len(strs) == 1:
return strs[0]
m = min([len(x) for x in strs])
# m = len(min(strs))
for j in range(m): #数组中最短的字符串长度
#从第二个字符串开始判断第1-m个元素是否与第一个的相同,不同则记录下来
for i in range(1, len(strs)):
if strs[0][j] != strs[i][j]:
return strs[0][:j]
return strs[0][:m]
if __name__ == '__main__':
print(Solution().longestCommonPrefix(["abca", "aba", "aaab"]))
58、最后一个单词的长度
给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: “Hello World”
输出: 5
class Solution(object):
def lengthOfLastWord(self, s):
# 方法一:
# s1 = list(s)
# s2 = s.split()
# if s1[-1] ==' ':
# return 0
# else:
# return len(s2[-1])
#方法二
count = 0
for i in s[::-1]:
if i == ' ' and count != 0:
return count
elif i != ' ':
count += 1
return count
#一个一个字符判断,如果是空字符并且前边累计n个字符,则这n个字符长度就是单词长度
print(Solution().lengthOfLastWord("hello world"))
总结
在循环的过程中,我们引入条件判断语句吗,如果满足了某种情况,则我们返回一个值,通常我们判断的是不符合一种情况,最后在循环外返回全部符合情况下的值(或者相反)!
m = min([len(x) for x in strs])
#求字符串数组最小长度的元素
本文详细解析了两个经典算法问题:寻找字符串数组中的最长公共前缀及计算字符串中最后一个单词的长度。通过具体示例和代码实现,阐述了算法的设计思路和执行流程。
609

被折叠的 条评论
为什么被折叠?



