恢復句話我有這個如何在JavaScript
var input = "([lazy({(jumps{fox([quick(The)]brown)})over}the)]dog)";
我想
敏捷的棕色狐狸跳過懶狗。
任何想法?我試圖使用RegEx
但找不到。
恢復句話我有這個如何在JavaScript
var input = "([lazy({(jumps{fox([quick(The)]brown)})over}the)]dog)";
我想
敏捷的棕色狐狸跳過懶狗。
任何想法?我試圖使用RegEx
但找不到。
我們需要在這裏使用堆棧類型的方法。請參閱下面的實現。
var res = "([lazy({(jumps{fox([quick(The)]brown)})over}the)]dog)".split("");
var txt = [],lvl=-1;
res.forEach(function(e,i){
if(e=='('||e=='{'||e=='['){
lvl++;
} else if(e==')'||e=='}'||e==']'){
lvl--;
} else {
if(typeof txt[lvl]=='undefined'){
txt[lvl] = e;
} else {
txt[lvl] = txt[lvl] + e;
}
}
});
txt = txt.reverse().join(" ");
console.log(txt);
if(lvl!=-1) {
//this will alert if any missing parenthesis
alert("Pattern error in input");
}
編輯:根據問題所有者對輸入模式的描述進行更新。
它是特定於這種情況還是字符串可以是任何長度不等的東西? – sshashank124
*當然*你不能使用正則表達式,你將需要解析它。它使用的分組符號是什麼? –
聽起來像數據結構作業。 [提示:二進制表達式樹](http://en.wikipedia.org/wiki/Binary_expression_tree)和[stacks](http://en.wikipedia.org/wiki/Stack_(abstract_data_type))。 – Joseph