LEETCODE | PYTHON | 383 | 赎金信
1. 题目
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/ransom-note
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 代码
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
#计算字符串长度
lenR = len(ransomNote)
lenM = len(magazine)
#特殊情况判断
if lenM < lenR:
return False
#构建两个list储存字母数量
ListR = [0]*26
ListM = [0]*26
#遍历字符串计算
for i in range(lenM):
if i<lenR:
#对应字符位置
posR = ord(ransomNote[i])-ord('a')
ListR[posR] = ListR[posR] + 1
posM = ord(magazine[i]) - ord('a')
ListM[posM] = ListM[posM] + 1
#比较list的大小关系
for i in range(26):
if ListR[i] > ListM[i]:
return False
return True