leepcode-题目解析6
30 找不同
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入:
s = "abcd"
t = "abcde"
输出:
e
解释:
'e' 是那个被添加的字母。
解答: 一开始想用集合来的差集来解题,忽略了集合会去重,如果字符串t有两个相同元素,就不能用集合了.就只能用笨办法,转化成列表后,用for循环把元素一个个取出来,在用列表内置方法.remove来一个个删除.
class Solution(object):
def findTheDifference(self, s, t):
"""
:type s: str
:type t: str
:rtype: str
"""
# s1=set(t) ^ set(s)
# for i in s1:
# return i
s_nums = list(s)
t_nums = list(t)
for i in s_nums:
if i in t_nums:
t_nums.remove(i)
return (t_nums[0])
31 斐波拉契数
斐波那契数,通常用 F(n)
表示,形成的序列称为斐波那契数列。该数列由 0
和 1
开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
给定 N
,计算 F(N)
。
解答:斐波拉契的规律:a,b = b,a+b
class Solution:
def fib(self, N: int) -> int:
if N == 0:
return 0
elif N ==1:
return 1
elif N ==2:
return 1
elif N == 3:
return 2
else:
a = 1
b = 2
for i in range(N-3):
a,b = b,a+b
return b
32 检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
- 全部字母都是大写,比如"USA"。
- 单词中所有字母都不是大写,比如"leetcode"。
- 如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。
否则,我们定义这个单词没有正确使用大写字母。
示例 1:
输入: "USA"
输出: True
示例 2:
输入: "FlaG"
输出: False
注意: 输入是由大写和小写拉丁字母组成的非空单词。
解答:利用python3中字符串的内置方法解答即可得出答案
class Solution:
def detectCapitalUse(self, word: str) -> bool:
# if word.upper() == word:
# return True
# elif word.lower() == word:
# return True
# elif word.capitalize() == word:
# return True
# else:
# return False
return word.upper() == word or word.lower() == word or word.capitalize() == word