用栈概念解决“括号()[]{}判断是否有效”

2022-05-31  本文已影响0人  春木橙云

请使用栈概念,判断字符串内的括号,包括"("、"["、"{")是否闭合,举例如下:

let str = '((({{{123}}}))))'  //false
let str = '({[]})' //true
let str = '((()' //false

我的解法如下:

function validate(str: string) {
  const targetArray: string[] = str.split("");
  let leftStack: string[] = [];
  let status: boolean = true;
  for (let i = 0; i < targetArray.length; i++) {
    if (
      targetArray[i] === "{" ||
      targetArray[i] === "(" ||
      targetArray[i] === "["
    ) {
      leftStack.push(targetArray[i]);
    } else {
      if (!["}", "]", ")"].includes(targetArray[i])) continue;
      const lastStr = leftStack.pop();
      if (targetArray[i] === ")") {
        if (lastStr !== "(") {
          status = false;
          break;
        }
      } else if (targetArray[i] === "]") {
        if (lastStr !== "[") {
          status = false;
          break;
        }
      } else if (targetArray[i] === "}") {
        if (lastStr !== "{") {
          status = false;
          break;
        }
      }
    }
  }
  if (leftStack.length > 0) {
    status = false;
  }
  return status;
}

THE END!

上一篇下一篇

猜你喜欢

热点阅读