Skip to content

Commit 5557b53

Browse files
committed
✨ [394] second try after awhile
1 parent 2761a73 commit 5557b53

File tree

1 file changed

+160
-67
lines changed

1 file changed

+160
-67
lines changed

394/my_solution.js

+160-67
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,180 @@
1-
/**
2-
* @param {string} s
3-
* @return {string}
4-
*/
1+
52
const decodeString = (s) => {
6-
s = s.split("");
7-
let stack = [], result = null;
8-
console.log(`input: ${s}`);
3+
s = s.split("")
4+
5+
let stack = [], result = []
6+
97
for (let i = 0; i < s.length; i++) {
10-
if ("]" === s[i]) {
11-
console.log(`HIT! ] at ${i}`)
12-
console.log(s)
13-
stack = popToOpen(stack, stack.length - 1, [])
14-
// result.push()
15-
console.log(">>>>>> final stack returned")
8+
if (s[i] === "]") {
9+
console.log(`s[i]: ${s[i]}`)
1610
console.log(stack)
17-
} else {
18-
stack.push(s[i])
19-
}
2011

21-
}
12+
let collectList = []
13+
14+
// pop till "["
15+
while (stack.length > 0) {
16+
console.log("> collectList")
17+
console.log(collectList)
18+
// console.log(collectList.reverse())
2219

23-
console.log("stack")
24-
console.log(stack.join())
25-
console.log(stack.join(""))
26-
};
27-
const popToOpen = (stack, popNb, tmp) => {
28-
console.log(`-> popToOpen - popNb - ${popNb} - stack[i] - ${stack[popNb]}`)
20+
let curr = stack.pop()
21+
console.log(">>> curr")
22+
console.log(curr)
23+
24+
if (curr === "[") {
25+
break;
26+
}
27+
collectList.push(curr)
28+
}
2929

30-
if (0 > popNb) return stack;
30+
console.log("before finding number")
31+
console.log(stack)
3132

32-
if ("[" === stack[popNb]) {
33-
stack.pop(); // Remove "["
34-
let multiplier = [];
35-
console.log("KLQWKLJELKJWLJKWQELKJEQWLKJQWELKJLKJWQELJKQWELKJW")
36-
console.log(stack)
33+
// if (curr === "[") {
34+
let numberStr = ""
3735

38-
let l = stack.length - 1;
36+
// to find number
37+
while (stack.length > 0) {
38+
let maybeNumber = stack[stack.length - 1];
3939

40-
for (let j = l; j >= 0; j--) {
41-
console.log(`---> in J loop - ${j}`)
40+
console.log("maybeNumber")
41+
console.log(maybeNumber)
42+
console.log(`isNaN?`)
43+
console.log(isNaN(maybeNumber))
44+
// not a number -> break
45+
if (isNaN(maybeNumber)) break;
4246

43-
let maybeNb = parseInt(stack[j]);
44-
// because the numebr will never be 0 so we can use parseInt
45-
if (!maybeNb && 0 !== maybeNb) {
46-
console.log("NOT AN INT BYEEE")
47-
console.log(stack[j])
48-
break;
47+
numberStr += stack.pop(); // pop only the last guy IS a number
48+
console.log("> numberStr")
49+
console.log(numberStr)
4950
}
5051

51-
console.log("stack[j]")
52-
console.log(stack[j])
53-
multiplier = [...stack[j], ...multiplier];
54-
stack.pop();
55-
}
52+
// console.log("> numberStr")
53+
// console.log(numberStr)
54+
numberStr = numberStr.split("").reverse().join("")
55+
numberStr = parseInt(numberStr)
56+
console.log("> numberStr")
57+
console.log(numberStr)
5658

57-
console.log("---> multiplier")
58-
console.log(multiplier)
59-
console.log(parseInt(multiplier.join()))
60-
console.log("tmp")
61-
console.log(tmp)
59+
collectList.reverse()
60+
console.log("after reversing collectList")
61+
console.log(collectList)
6262

63-
multiplier = parseInt(multiplier.join(""));
63+
while (numberStr > 0) {
64+
console.log("pushing ...")
65+
console.log(stack)
66+
stack.push(collectList.join(""))
67+
console.log("result <")
68+
console.log(stack)
69+
numberStr--;
70+
}
6471

65-
tmp = tmp.join("").repeat(multiplier).split("")
66-
return [...stack, ...tmp];
72+
console.log("collectList")
73+
console.log(collectList)
74+
// result.push(collectList) // dc syntax
75+
76+
} else {
77+
stack.push(s[i])
78+
}
6779
}
6880

69-
// tmp = [stack.pop(), ...[...tmp, stack[i]]];
70-
console.log("--before tmp")
71-
console.log(tmp)
72-
tmp = [...stack.pop(), ...tmp];
81+
return stack.join("");
82+
}
7383

74-
console.log("--- AFTER POP")
75-
console.log(stack)
76-
console.log(tmp)
7784

78-
return popToOpen(stack, popNb - 1, tmp)
79-
}
85+
let x =
86+
// decodeString("3[a]2[bc]") // Output: "aaabcbc"
87+
decodeString("100[leetcode]")
88+
// decodeString("3[a2[c]]") // "accaccacc"
89+
90+
console.log("Res")
91+
console.log(x)
8092

81-
// 14
82-
// decodeString("ww3[aaa2[abac]]2[a]a")
83-
// decodeString("2[asd]3[q]")
84-
// decodeString("2[asdww]")
85-
// decodeString("qq3[w]x")
86-
decodeString("33[w]z")
87-
decodeString("100[leetcode]")
93+
//
94+
// /**
95+
// * @param {string} s
96+
// * @return {string}
97+
// */
98+
// const decodeString = (s) => {
99+
// s = s.split("");
100+
// let stack = [], result = null;
101+
// console.log(`input: ${s}`);
102+
// for (let i = 0; i < s.length; i++) {
103+
// if ("]" === s[i]) {
104+
// console.log(`HIT! ] at ${i}`)
105+
// console.log(s)
106+
// stack = popToOpen(stack, stack.length - 1, [])
107+
// // result.push()
108+
// console.log(">>>>>> final stack returned")
109+
// console.log(stack)
110+
// } else {
111+
// stack.push(s[i])
112+
// }
113+
//
114+
// }
115+
//
116+
// console.log("stack")
117+
// console.log(stack.join())
118+
// console.log(stack.join(""))
119+
// };
120+
// const popToOpen = (stack, popNb, tmp) => {
121+
// console.log(`-> popToOpen - popNb - ${popNb} - stack[i] - ${stack[popNb]}`)
122+
//
123+
// if (0 > popNb) return stack;
124+
//
125+
// if ("[" === stack[popNb]) {
126+
// stack.pop(); // Remove "["
127+
// let multiplier = [];
128+
// console.log("KLQWKLJELKJWLJKWQELKJEQWLKJQWELKJLKJWQELJKQWELKJW")
129+
// console.log(stack)
130+
//
131+
// let l = stack.length - 1;
132+
//
133+
// for (let j = l; j >= 0; j--) {
134+
// console.log(`---> in J loop - ${j}`)
135+
//
136+
// let maybeNb = parseInt(stack[j]);
137+
// // because the numebr will never be 0 so we can use parseInt
138+
// if (!maybeNb && 0 !== maybeNb) {
139+
// console.log("NOT AN INT BYEEE")
140+
// console.log(stack[j])
141+
// break;
142+
// }
143+
//
144+
// console.log("stack[j]")
145+
// console.log(stack[j])
146+
// multiplier = [...stack[j], ...multiplier];
147+
// stack.pop();
148+
// }
149+
//
150+
// console.log("---> multiplier")
151+
// console.log(multiplier)
152+
// console.log(parseInt(multiplier.join()))
153+
// console.log("tmp")
154+
// console.log(tmp)
155+
//
156+
// multiplier = parseInt(multiplier.join(""));
157+
//
158+
// tmp = tmp.join("").repeat(multiplier).split("")
159+
// return [...stack, ...tmp];
160+
// }
161+
//
162+
// // tmp = [stack.pop(), ...[...tmp, stack[i]]];
163+
// console.log("--before tmp")
164+
// console.log(tmp)
165+
// tmp = [...stack.pop(), ...tmp];
166+
//
167+
// console.log("--- AFTER POP")
168+
// console.log(stack)
169+
// console.log(tmp)
170+
//
171+
// return popToOpen(stack, popNb - 1, tmp)
172+
// }
173+
//
174+
// // 14
175+
// // decodeString("ww3[aaa2[abac]]2[a]a")
176+
// // decodeString("2[asd]3[q]")
177+
// // decodeString("2[asdww]")
178+
// // decodeString("qq3[w]x")
179+
// decodeString("33[w]z")
180+
// decodeString("100[leetcode]")

0 commit comments

Comments
 (0)