File tree Expand file tree Collapse file tree 1 file changed +77
-0
lines changed
Expand file tree Collapse file tree 1 file changed +77
-0
lines changed Original file line number Diff line number Diff line change 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+ */
You can’t perform that action at this time.
0 commit comments