by Anonymous » 23 Apr 2025, 11:06
Ich versuche, eine Variation des klassischen Problems "Decoding String" in JavaScript zu lösen, aber anstelle von Zeichen oder Zeichenfolgen in Klammern enthalten meine Eingänge Zahlen - und sie können verschachtelt werden. < /p>
Code: Select all
let sampleA = "3[2]5[8]";
// Expected output: "22288888"
let sampleB = "2[2[32]1[82]]";
// Expected output: "323282323282"
Ich habe damit begonnen, einen Standard -Decoder zu ändern, der Strings wie "3 [a] 2 [bc]" behandelt. Hier ist eine vereinfachte Version von dem, was ich ausprobiert habe: < /p>
Code: Select all
function decodeString(s) {
const stack = [];
let current = "";
let k = 0;
for (let ch of s) {
if (!isNaN(ch)) {
k = k * 10 + parseInt(ch);
} else if (ch === '[') {
stack.push([current, k]);
current = "";
k = 0;
} else if (ch === ']') {
const [prev, repeat] = stack.pop();
current = prev + current.repeat(repeat);
} else {
current += ch;
}
}
return current;
}
This works fine for alphabetic inputs like "3[a2[c]]" → "accaccacc".
But for my case with numeric content like "2[2[32]1[82]]", it fails because:
It treats numbers only as repeat zählt.>
Ich versuche, eine Variation des klassischen Problems "Decoding String" in JavaScript zu lösen, aber anstelle von Zeichen oder Zeichenfolgen in Klammern enthalten meine Eingänge Zahlen - und sie können verschachtelt werden. < /p>
[code]let sampleA = "3[2]5[8]";
// Expected output: "22288888"
let sampleB = "2[2[32]1[82]]";
// Expected output: "323282323282"
[/code]
Ich habe damit begonnen, einen Standard -Decoder zu ändern, der Strings wie "3 [a] 2 [bc]" behandelt. Hier ist eine vereinfachte Version von dem, was ich ausprobiert habe: < /p>
[code]function decodeString(s) {
const stack = [];
let current = "";
let k = 0;
for (let ch of s) {
if (!isNaN(ch)) {
k = k * 10 + parseInt(ch);
} else if (ch === '[') {
stack.push([current, k]);
current = "";
k = 0;
} else if (ch === ']') {
const [prev, repeat] = stack.pop();
current = prev + current.repeat(repeat);
} else {
current += ch;
}
}
return current;
}
[/code]
This works fine for alphabetic inputs like "3[a2[c]]" → "accaccacc".
But for my case with numeric content like "2[2[32]1[82]]", it fails because:
It treats numbers only as repeat zählt.>