leepcode-题目解析6

30 找不同

给定两个字符串 st,它们只包含小写字母。

字符串 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) 表示,形成的序列称为斐波那契数列。该数列由 01 开始,后面的每一项数字都是前面两项数字的和。也就是:

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 检测大写字母

给定一个单词,你需要判断单词的大写使用是否正确。

我们定义,在以下情况时,单词的大写用法是正确的:

  1. 全部字母都是大写,比如"USA"。
  2. 单词中所有字母都不是大写,比如"leetcode"。
  3. 如果单词不只含有一个字母,只有首字母大写, 比如 "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
posted @ 2019-05-28 21:27  raynduan  阅读(355)  评论(0编辑  收藏  举报