Skip to content

Instantly share code, notes, and snippets.

@fromtexas
Created August 7, 2017 22:02
Show Gist options
  • Select an option

  • Save fromtexas/4f93d5d9887a3a39b20041e51d2639c2 to your computer and use it in GitHub Desktop.

Select an option

Save fromtexas/4f93d5d9887a3a39b20041e51d2639c2 to your computer and use it in GitHub Desktop.
var validString = (string) => {
var myString = string ? string.replace(/[^\[\]\(\)\{\}]/g,'') : '';
if(!myString){
console.log(true);
return true;
}
var tokens = [ ['{','}'] , ['[',']'] , ['(',')'] ];
var stack = [];
var arr = [...myString];
var isOpening = (parenthesisChar) => {
for (var j = 0; j < tokens.length; j++) {
if (tokens[j][0] === parenthesisChar) {
return true;
}
}
return false;
};
var match = (topOfStack, closedParenthesis) => {
for (var k = 0; k < tokens.length; k++) {
if (tokens[k][0] === topOfStack && tokens[k][1] === closedParenthesis) {
return true;
}
}
return false;
};
for(var i = 0; i < arr.length; i++){
if(isOpening(arr[i])){
stack.push(arr[i])
} else {
if(stack.length === 0){
console.log(false);
return false;
}
var top = stack.pop();
if(!match(top, arr[i])) {
console.log(false);
return false
}
}
}
console.log(stack);
if (stack.length === 0){
return true
} else{
return false
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment