Skip to content

Commit 823887c

Browse files
committed
group anagrams solution
1 parent 29fcc23 commit 823887c

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* @param {string[]} strs
3+
* @return {string[][]}
4+
*/
5+
6+
// ๋ฌธ์ œ๋Š” ํ’€์—ˆ์œผ๋‚˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ธก๋ฉด์—์„œ ํšจ์œจ์ด ๋„ˆ๋ฌด ๋–จ์–ด์ง€๋Š” ํ’€์ด ๋ฐฉ๋ฒ•....
7+
var groupAnagrams = function (strs) {
8+
let outputArr = [];
9+
let countArr = [];
10+
11+
const A_ASCII = 'a'.charCodeAt(0);
12+
const Z_ASCII = 'z'.charCodeAt(0);
13+
14+
let charCounts = Z_ASCII - A_ASCII + 1;
15+
let charCountArr = new Array(charCounts).fill(0); //์ธ๋ฑ์Šค๊ฐ€ ์•ŒํŒŒ๋ฒณ์„ ๋‚˜ํƒ€๋ƒ„.
16+
17+
for (str of strs) {
18+
let strCountString = getStrCountString(str);
19+
20+
let hasSameCountIndex = countArr.findIndex((item) => item === strCountString);
21+
22+
if (hasSameCountIndex !== -1) {
23+
outputArr[hasSameCountIndex].push(str);
24+
} else {
25+
countArr.push(strCountString);
26+
27+
outputArr.push([str]);
28+
}
29+
}
30+
31+
return outputArr;
32+
33+
function getStrCountString(str) {
34+
let tempArr = [...charCountArr];
35+
36+
for (char of str) {
37+
let charAscii = char.charCodeAt(0);
38+
let charIndex = charAscii - A_ASCII;
39+
tempArr[charIndex] += 1;
40+
}
41+
return tempArr.join(',');
42+
}
43+
};
44+
45+

0 commit comments

Comments
ย (0)