描述:
给定一个任意的表示勒索信内容的字符串,和另一个字符串表示杂志的内容,写一个方法判断能否通过剪下杂志中的内容来构造出这封勒索信,若可以,返回 true;否则返回 false。
杂志字符串中的每一个字符仅能在勒索信中使用一次。
你可以认为两个字符串都只包含小写字母。
样例 1
输入 : ransomNote = "aa", magazine = "aab"
输出 : true
样例 2
输入 : ransomNote = "aaa", magazine = "aab"
输出 : false
class Solution:
"""
@param ransomNote: a string
@param magazine: a string
@return: whether the ransom note can be constructed from the magazines
"""
def canConstruct(self, ransomNote, magazine):
# Write your code here
arr = [0] * 26 # arr=[0,0,0,0,0,0,...,0]
for c in magazine:
arr[ord(c) - ord('a')] += 1 # ord()函数返回字符的ASCII码
# 遍历magazine的内容,用arr数组记录每个字符出现的次数
for c in ransomNote:
arr[ord(c) - ord('a')] -= 1 # 遍历ransomnote的内容,减去相应字符的个数,如果出现某个字符的个数小于0,则返回False
if arr[ord(c) - ord('a')] < 0:
return False
return True