这里的三题都和字符出现次数有关,可以用dict
或 Counter
来轻松解决。
387. 字符串中的第一个唯一字符
返回字符串中第一个出现次数为一的下标。
用ditc
统计出现次数后遍历:
class Solution: def firstUniqChar(self, s: str) -> int: word_count = defaultdict(int) for x in s: word_count[x] += 1 for idx,x in enumerate(s): if word_count[x] == 1: return idx return -1
383. 赎金信
输入两个字符串s1
,s2
。
判断s1
能不能通过s2
中的字符拼凑出来。
使用Counter
统计字符出现次数,只要s2
中的字符出现次数比s1
的次数多就可以。
class Solution: def canConstruct(self, ransomNote: str, magazine: str) -> bool: cnt1 = Counter(ransomNote) cnt2 = Counter(magazine) for k,v in cnt1.items(): if k in cnt2 and cnt2[k] >= v: continue else: return False return True
242. 有效的字母异位词
给定两个字符串s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
class Solution: def isAnagram(self, s: str, t: str) -> bool: return Counter(s)== Counter(t)