LeetCode 394. Decode String
matchメソッド
match
メソッドは配列を返します.<Example>
let string = "a1b2c3d4";
string = string.match(/[a-z]+\d/gi);
output
["a1", "b2", "c3", "d4"]
最初のExample 1の共有に挑戦します.Input: s = "3[a]2[bc]"
s.replace(/\d+\[[a-z]+\]/gi,"바뀜");
output
"바뀜바뀜"
レッスンは3[a]
から2[bc]
から完全な解答を見てみましょう.
const decodeString = (s) => {
// 숫자가 포함되어 있으면 반복되는 while 로직
while(s.match(/\d/gi)) {
s = s.replace(/\d+\[[a-z]+\]/gi, (value) => { //3[acc]
const repeatNumber = Number(value.match(/\d+/gi)[0]); // 2 3
// [] 앞 숫자를 추출
const internalStr = value.match(/[a-z]+/gi); // c acc
// [] 안 알파벳 추출
return internalStr[0].repeat(repeatNumber); // cc accaccacc
});
}
return s;
};
Example2
を混同して、重複しているのに、どうしてこのような正規表現が本当なのかという質問がたくさんありました.よく見るとreplaceを探しています(
/\d+[[a-z]+]/gi
).その結果、数字[アルファベット+数字[アルファベット]ではなく、数字[アルファベット]を探しているので、括弧の中の数字[アルファベット]を先に解決してから、他の括弧を処理します.Reference
この問題について(LeetCode 394. Decode String), 我々は、より多くの情報をここで見つけました https://velog.io/@leehangeul/LeetCodeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol