Wie dekodieren Sie verschachtelte numerische Muster in Saiten wie 2 [2 [32] 1 [82]] in JavaScript? [geschlossen]JavaScript

Javascript-Forum
Anonymous
 Wie dekodieren Sie verschachtelte numerische Muster in Saiten wie 2 [2 [32] 1 [82]] in JavaScript? [geschlossen]

Post by Anonymous »

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.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post