Skip to content

Commit 4cffb45

Browse files
committed
valid anagram solution
1 parent 026e627 commit 4cffb45

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

valid-anagram/yeeZinu.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/**
2+
* @param {string} s
3+
* @param {string} t
4+
* @return {boolean}
5+
*
6+
*/
7+
8+
var isAnagram = function (s, t) {
9+
// 두 문자열의 길이가 같지않다면 false
10+
if (s.length !== t.length) {
11+
return false;
12+
};
13+
14+
// Map을 사용해서 데이터 최신화
15+
let count = new Map();
16+
17+
// set으로 해당 문자를 key, 갯수를 value로 카운트
18+
for (let char of s) {
19+
count.set(char, (count.get(char) || 0) + 1)
20+
}
21+
22+
for (let char of t) {
23+
// 새로운 문자가 map에 없거나, 이미 카운트가 0이라면 false
24+
if (!count.has(char) || count.get(char) === 0) {
25+
return false;
26+
}
27+
// 문자 카운트 -1
28+
count.set(char, (count.get(char) - 1))
29+
}
30+
31+
return true;
32+
}
33+
34+
/*
35+
* 문제: 두 문자열의 구성요소 비교
36+
*
37+
* 생각: 각 문자열에 상대 문자열의 스펠링이 있는지 확인하고 splice로 제거
38+
* 결과: 타임리밋
39+
var isAnagram = function (s, t) {
40+
if (s.length !== t.length) {
41+
return false;
42+
};
43+
44+
let sArr = [];
45+
let tArr = [];
46+
let finder = 0;
47+
48+
for (let j = 0; j < s.length; j++) {
49+
sArr.push(s[j]);
50+
tArr.push(t[j]);
51+
}
52+
53+
// 반복문을 돌며 s와 t를 비교
54+
for (let i = 0; i < s.length; i++) {
55+
//s[i]번 째가 t안에 있다면?
56+
if (tArr.indexOf(sArr[0]) !== -1) {
57+
// 찾은 인덱스를 저장해 줌 -> sArr 에서 splice먼저해버리면 배열이 달라져서 못찾음;;
58+
finder = tArr.indexOf(sArr[0]);
59+
//s[i]를 스플라이스로 빼고
60+
sArr.splice(0, 1);
61+
//t의 인덱스번호를 슬라이스로 뺌
62+
tArr.splice(finder, 1);
63+
}
64+
console.log(i);
65+
console.log(sArr);
66+
console.log(tArr);
67+
}
68+
69+
// s와 t의 길이가 0이면 true 아니면 fales
70+
if (sArr.length === 0 && tArr.length === 0) {
71+
return true;
72+
}
73+
else return false
74+
75+
};
76+
77+
*/

0 commit comments

Comments
 (0)