Skip to content

Commit 2ef062c

Browse files
committed
add solution: valid-anagram
1 parent bcde25c commit 2ef062c

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

valid-anagram/dusunax.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
'''
2+
# Leetcode 242. Valid Anagram
3+
4+
use `Counter` to (1)compare the frequency of characters in both strings, and (2)try to compare the frequency more efficiently. 🔍
5+
6+
## Time and Space Complexity
7+
8+
```
9+
TC: O(n)
10+
SC: O(n)
11+
```
12+
13+
### A. use frequency object
14+
15+
#### TC is O(n):
16+
- iterating through the strings just once to compare the frequency of characters. O(n)
17+
18+
#### SC is O(n):
19+
- creating a new string `converted_s` to store the
20+
21+
### B. use Counter more efficiently
22+
23+
#### TC is O(n):
24+
- iterating through the strings just once to compare the frequency of characters. O(n)
25+
26+
#### SC is O(n):
27+
- creating a new string `converted_s` to store the
28+
'''
29+
class Solution:
30+
def isAnagramA(self, s: str, t: str) -> bool:
31+
if len(s) != len(t):
32+
return False
33+
34+
frequency = Counter(s) # SC: O(n)
35+
36+
for char in t: # TC: O(n)
37+
if char not in frequency or frequency[char] == 0: # TC: O(1)
38+
return False
39+
frequency[char] -= 1
40+
41+
return True
42+
43+
def isAnagramB(self, s: str, t: str) -> bool:
44+
return Counter(s) == Counter(t) # TC: O(n), SC: O(n)

0 commit comments

Comments
 (0)