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

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

作者: 春木橙云 | 来源:发表于2022-05-31 20:42 被阅读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!

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/qiftmrtx.html