JSFiddle - React, Tailwind, and code Playground

by Rahul Desai

JavaScript

function validateParenthesisString(inputString){

  var firstCharacter = inputString.charAt(0);

  if(inputString.length === 0){ // empty string is as good as a valid string
    console.log('String is valid.');
    console.log('***********************************');
    return;
  } else if(firstCharacter === ')' || firstCharacter === ']' || firstCharacter === '}'){ // closing parenthesis
    console.log('First character is a closing one.');
    console.log('String is invalid.');
    console.log('***********************************');
    return;
  }

  var element,
      parenthesisStack = [];

  // iterate through the string
  for(var index = 0, length = inputString.length; index < length; index++){

    element = inputString.charAt(index); // cache the character

    switch(element){
      case '(':
        parenthesisStack.push('('); // openeing bracket, so just push it
        break;

      case ')':
        parenthesisStack = checkParenthesis(parenthesisStack, '(', ')');
        break;

      case '[':
        parenthesisStack.push('[');
        break;

      case ']':
        parenthesisStack = checkParenthesis(parenthesisStack, '[', ']');
        break;

      case '{':
        parenthesisStack.push('{');
        break;

      case '}':        
        parenthesisStack = checkParenthesis(parenthesisStack, '{', '}');
        break;

      default: // garbage character
        console.log('Invalid character encountered: ' + inputString.charAt(index));
        console.log('Please enter a valid string.');
        console.log('parenthesisStack:', parenthesisStack);
        console.log('***********************************');
        return;
    };

  }

  console.log('parenthesisStack:', parenthesisStack); // just for debugging

  // check parenthesisStack
  if(parenthesisStack.length === 0){
    console.log('String is valid!');
  } else {
    console.log('String is invalid!');
  }

  console.log('***********************************');

};

function...