文章目录
242. 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s 和 t 仅包含小写字母
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-anagram
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
分析
- 1.defultdict构建默认字典,通过遍历构建出s,t的哈希表,通过比较即可知道两者是否相等
- 2.也可以直接使用Counter计数器,这样就不用遍历s,t,代码更加简洁
代码(defaultdict)
from collections import defaultdict
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
hash_s,hash_t= defaultdict(int),defaultdict(int)
for i in s:
hash_s[i]+=1
for i in t:
hash_t[i]+=1
return hash_s == hash_t
通过截图
代码(Counter)
from collections import Counter
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
hash_s,hash_t= Counter(s),Counter(t)
return hash_s == hash_t
通过截图
383. 赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
示例 1:
输入:ransomNote = "a", magazine = "b"
输出:false
示例 2:
输入:ransomNote = "aa", magazine = "ab"
输出:false
示例 3:
输入:ransomNote = "aa", magazine = "aab"
输出:true
提示:
1 <= ransomNote.length, magazine.length <= 105
ransomNote 和 magazine 由小写英文字母组成
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ransom-note
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
分析
1.使用默认字典dict,最后遍历字符串,如果ransomNote每个位置的哈希值小于等于magazine的哈希值,则ransomNote必然是magazine的子集(其实使用set也可以判断ransomNote元素是否是magazine的子集,但是判断不了元素数量得额外处理 )
2.使用Count计数器:核心还是1的方法,区别是不用遍历字符串了
代码( defalutdict)
from collections import defaultdict
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
hash_s,hash_t= defaultdict(int),defaultdict(int)
for i in s:
hash_s[i]+=1
for i in t:
hash_t[i]+=1
return hash_s == hash_t
通过截图
代码(Counter)
from collections import Counter
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
hash_r,hash_m= Counter(ransomNote),Counter(magazine)
for i in ransomNote:
if hash_r[i] > hash_m[i]:
return False
return True
通过截图
如有错误,敬请指正,欢迎交流,谢谢♪(・ω・)ノ