Skip to content

Commit a601a79

Browse files
committed
feat: add solution to Valid Anagram DaleStudy#218
1 parent 977652d commit a601a79

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

โ€Žvalid-anagram/river20s.py

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
class Solution(object):
2+
def isAnagram(self, s, t):
3+
"""
4+
:type s: str
5+
:type t: str
6+
:rtype: bool
7+
8+
s์™€ t์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™๋‹ค๋Š” ์ „์ œ ์•„๋ž˜
9+
s์™€ t๋ฅผ ๊ฐ๊ฐ ๋”•์…”๋„ˆ๋ฆฌ์— ์ €์žฅํ•˜๊ณ 
10+
๋”•์…”๋„ˆ๋ฆฌ๋ผ๋ฆฌ ๋น„๊ตํ•˜์—ฌ ์• ๋„ˆ๊ทธ๋žจ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ํ•จ์ˆ˜.
11+
12+
- ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
13+
- ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
14+
์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ํ•œ์ •ํ•  ๊ฒฝ์šฐ O(1)๋กœ ๋ณผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ
15+
์ถ”๊ฐ€ ์‚ฌํ•ญ์ธ UNICODE ๋ฌธ์ž๊ฐ€ ์ž…๋ ฅ๋  ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ
16+
๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ O(n)์œผ๋กœ ๊ณ„์‚ฐํ•จ.
17+
18+
"""
19+
# ๋จผ์ € s์™€ t์˜ ๊ธธ์ด ๋น„๊ต
20+
# s์™€ t๊ฐ€ ์• ๋„ˆ๊ทธ๋žจ์ด๋ผ๋ฉด ๊ธธ์ด๊ฐ€ ๊ฐ™์Œ
21+
if len(s) != len(t):
22+
return False
23+
24+
# ์ž…๋ ฅ ๋ฐ›์€ s์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ํ‚ค, ๋นˆ๋„๋ฅผ ๊ฐ’์œผ๋กœ ํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ
25+
sdict = {}
26+
27+
# s์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ sdict ๊ตฌ์ถ•
28+
# O(n) ์‹œ๊ฐ„ ์†Œ์š”
29+
30+
for char in s:
31+
if char in sdict:
32+
sdict[char] += 1
33+
else:
34+
sdict[char] = 1
35+
36+
# ์ž…๋ ฅ ๋ฐ›์€ t์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ํ‚ค, ๋นˆ๋„๋ฅผ ๊ฐ’์œผ๋กœ ํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ
37+
tdict = {}
38+
39+
# t์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ tdict ๊ตฌ์ถ•
40+
# O(n) ์‹œ๊ฐ„ ์†Œ์š”
41+
42+
for char in t:
43+
if char in tdict:
44+
tdict[char] += 1
45+
else:
46+
tdict[char] = 1
47+
48+
# Python์€ ํ‚ค์˜ ์ˆœ์„œ์— ์ƒ๊ด€ ์—†์ด ๋”•์…”๋„ˆ๋ฆฌ๋ผ๋ฆฌ ๋ฐ”๋กœ ๋น„๊ต ๊ฐ€๋Šฅ
49+
# sdict์™€ tdict ๋น„๊ต ํ›„ ๊ฐ™์œผ๋ฉด True ๊ฐ™์ง€ ์•Š์œผ๋ฉด False ๋ฐ˜ํ™˜
50+
# ๋”•์…”๋„ˆ๋ฆฌ ์•ˆ์˜ ํ‚ค์˜ ์ˆ˜๊ฐ€ k์ด๊ณ  ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ๊ฐœ๋ณ„์ ์ด๋ผ๋ฉด,
51+
# ์‹œ๊ฐ„์€ O(k)๊ฐ€ ํ•„์š”
52+
# ์—ฌ๊ธฐ์„œ k๋Š” O(n) ์ˆ˜์ค€์ด๋ฏ€๋กœ ์ „์ฒด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)
53+
54+
if sdict == tdict:
55+
return True
56+
else:
57+
return False

0 commit comments

Comments
ย (0)