Skip to content

Commit acf0c26

Browse files
committed
solve isAnagram
1 parent 896931f commit acf0c26

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

โ€Žvalid-anagram/hyejj19.tsโ€Ž

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// 1๋ฒˆ์งธ ์ ‘๊ทผ
2+
// ๊ธธ์ด๊ฐ€ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด ๋ฌด์กฐ๊ฑด ์˜ˆ์™ธ์ด๋ฏ€๋กœ false.
3+
// ๋‘ ๋ฌธ์ž์—ด์„ ๋‹ค Map ์œผ๋กœ ๋งŒ๋“ ๋‹ค.
4+
// ํ•˜๋‚˜์˜ Map ์˜ ๊ธ€์ž์™€ ๋‹ค๋ฅธ ํ•˜๋‚˜์˜ Map ์— ์žˆ๋Š” ๊ธ€์ž๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ์กด์žฌ ์—ฌ๋ถ€์™€ ์นด์šดํŠธ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.
5+
6+
function isAnagram(s: string, t: string): boolean {
7+
if (s.length !== t.length) return false;
8+
9+
const sMap = new Map();
10+
for (const sChar of s) {
11+
sMap.set(sChar, (sMap.get(sChar) || 0) + 1);
12+
}
13+
const tMap = new Map();
14+
for (const tChar of t) {
15+
tMap.set(tChar, (tMap.get(tChar) || 0) + 1);
16+
}
17+
18+
for (const [char, count] of tMap) {
19+
if (!sMap.get(char)) return false;
20+
if (sMap.get(char) !== count) return false;
21+
}
22+
23+
return true;
24+
}
25+
26+
// 2๋ฒˆ์งธ ์ ‘๊ทผ
27+
// Map์„ ํ•œ ๊ฐœ๋งŒ ๋งŒ๋“ค๊ณ ๋„ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์„๊นŒ?
28+
// 1. ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ Map ์„ ๋งŒ๋“ ๋‹ค.
29+
// 2. ๋‚˜๋จธ์ง€ ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ํ•ด๋‹น ๋ฌธ์ž์—ด ์นด์šดํŠธ๋ฅผ Map ์—์„œ ์กฐํšŒ
30+
// 3. ๋งŒ์•ฝ ์นด์šดํŠธ๊ฐ€ 0์ด๋ผ๋ฉด false
31+
// 4. ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด Map ์˜ ์นด์šดํŠธ๋ฅผ -1.
32+
function isAnagram(s: string, t: string): boolean {
33+
if (s.length !== t.length) return false;
34+
35+
const sMap = new Map();
36+
for (const sChar of s) {
37+
sMap.set(sChar, (sMap.get(sChar) || 0) + 1);
38+
}
39+
for (const char of t) {
40+
const count = sMap.get(char) || 0;
41+
if (count === 0) return false;
42+
sMap.set(char, count - 1);
43+
}
44+
45+
return true;
46+
}

0 commit comments

Comments
ย (0)