[Short Leetcode] 使用Python特性快速求解Leetcode题目

本文收录整理了部分能够利用python特性迅速求解的Leetcode简单题目合集,多数求解代码在3行以内。
不定期更新,欢迎评论补充题目


[58. 最后一个单词的长度]
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
单词是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例

输入:s = "Hello World"
输出:5
解释:最后一个单词是“World”,长度为5

解答

def lengthOfLastWord(self, s: str) -> int:
    return len(s.rstrip().split(" ")[-1])

[217. 存在重复元素]
给你一个整数数组 nums 。如果任一值在数组中出现至少两次,返回 true ;如果数组中每个元素互不相同,返回 false 。
示例

输入:nums = [1,2,3,1]
输出:true

解答

def containsDuplicate(self, nums: List[int]) -> bool:
	return len(nums) != len(set(nums))

[242. 有效的字母异位词]
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例

输入: s = "anagram", t = "nagaram"
输出: true

解答

def isAnagram(self, s: str, t: str) -> bool:
	return sorted(s) == sorted(t)

[349. 两个数组的交集]
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序
示例

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

解答

def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
	return list(set(nums1) & set(nums2))

[434. 字符串中的单词数]
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例

输入: "Hello, my name is John"
输出: 5
解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。

解答

def countSegments(self, s: str) -> int:
    return len(s.split())

[461. 汉明距离]
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x 和 y,计算并返回它们之间的汉明距离。
示例

输入:x = 1, y = 4
输出:2
解释:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑
上面的箭头指出了对应二进制位不同的位置。

解答

def hammingDistance(self, x: int, y: int) -> int:
	return bin(x ^ y).count('1')

[476. 数字的补数]
对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。
例如,整数 5 的二进制表示是 “101” ,取反后得到 “010” ,再转回十进制表示得到补数 2 。
给你一个整数 num ,输出它的补数。
示例

输入:num = 5
输出:2
解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2

解答

def findComplement(self, num: int) -> int:
	return int(bin(num)[2:].replace('0', '2').replace('1', '0').replace('2', '1'), 2)

[520. 检测大写字母]
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如 “USA” 。
单词中所有字母都不是大写,比如 “leetcode” 。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google” 。
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。
示例

输入:word = "USA"
输出:true

解答

def detectCapitalUse(self, word: str) -> bool:
	return word.upper()==word or word.lower()==word or word.title()==word

[1672. 最富有客户的资产总量]
给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i​​​​​​​​​​​​ 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。
客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。
示例

输入:accounts = [[1,2,3],[3,2,1]]
输出:6
解释:
第 1 位客户的资产总量 = 1 + 2 + 3 = 62 位客户的资产总量 = 3 + 2 + 1 = 6
两位客户都是最富有的,资产总量都是 6 ,所以返回 6

解答

def maximumWealth(self, accounts: List[List[int]]) -> int:
    return max(map(sum, accounts))

[2315. 统计星号]
给你一个字符串 s ,每 两个 连续竖线 ‘|’ 为 一对 。换言之,第一个和第二个 ‘|’ 为一对,第三个和第四个 ‘|’ 为一对,以此类推。
请你返回 不在 竖线对之间,s 中 ‘*’ 的数目。
注意,每个竖线 ‘|’ 都会 恰好 属于一个对。
示例

输入:s = "l|*e*et|c**o|*de|"
输出:2
解释:不在竖线对之间的字符加粗加斜体后,得到字符串:"l|*e*et|c**o|*de|" 。
第一和第二条竖线 '|' 之间的字符不计入答案。
同时,第三条和第四条竖线 '|' 之间的字符也不计入答案。
不在竖线对之间总共有 2 个星号,所以我们返回 2

解答

def countAsterisks(self, s: str) -> int:
    return sum(t.count('*') for t in s.split('|')[::2])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值