题目:
https://leetcode-cn.com/problems/valid-anagram/
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
说明:
你可以假设字符串只包含小写字母。
思路:
一:使用hash表存储,比较value的个数
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if s is None or t is None:
return False
if s == t:
return True
# bf
s1 = {}
s2 = {}
for i in s:
if i in s1:
s1[i] += 1
else:
s1[i] = 1
for j in t:
if j in s2:
s2[j] += 1
else:
s2[j] = 1
if len(s1) != len(s2):
return False
for k, v in s1.items():
if k in s2:
if v == s2[k]:
continue
else:
return False
else:
return False
return True
二:使用hash表存储,每次遍历到的元素的时候一个存入,一个减去
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if s is None or t is None:
return False
if s == t:
return True
# 一加一减
s1 = {}
for i in s:
if i in s1:
s1[i] += 1
else:
s1[i] = 1
for j in t:
if j in s1:
s1[j] -= 1
if s1[j] < 0:
return False
else:
return False
for k, v in s1.items():
if v != 0:
return False
return True