{ "type": "code_options", "author": "csdn.net", "source": "solution.md", "exercise_id": "6b15cf2f03a14e478ddc2c2d135852e4", "keywords": "栈,字符串", "title": "有效的括号", "desc": [ { "content": "\n

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

    \t
  1. 左括号必须用相同类型的右括号闭合。
  2. \t
  3. 左括号必须以正确的顺序闭合。

 

示例 1:

输入:s = \"()\"
输出:
true

示例 2:

输入:s = \"()[]{}\"
输出:
true

示例 3:

输入:s = \"(]\"
输出:
false

示例 4:

输入:s = \"([)]\"
输出:
false

示例 5:

输入:s = \"{[]}\"
输出:
true

 

提示:

", "language": "markdown" } ], "answer": [ { "content": "", "language": "java" } ], "prepared": [ [ { "content": "", "language": "java" } ], [ { "content": "", "language": "java" } ], [ { "content": "", "language": "java" } ] ], "template": { "content": "class Solution {\n\tpublic boolean isValid(String s) {\n\t\tchar[] parentheses = { '(', '[', '{', ')', ']', '}' };\n\t\tint i = 0;\n\t\tchar c;\n\t\tint[] sum = { 0, 0, 0 };\n\t\tStack top = new Stack();\n\t\twhile (i < s.length()) {\n\t\t\tc = s.charAt(i);\n\t\t\tfor (int j = 0; j <= 2; j++) {\n\t\t\t\tif (c == parentheses[j]) {\n\t\t\t\t\ttop.push(j);\n\t\t\t\t\tsum[j]++;\n\t\t\t\t} else if (c == parentheses[j + 3]) {\n\t\t\t\t\tif (top.size() == 0 || top.peek() != j) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\ttop.pop();\n\t\t\t\t\tsum[j]--;\n\t\t\t\t} else {\n\t\t\t\t}\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\tfor (int j = 0; j <= 2; j++) {\n\t\t\tif (sum[j] != 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n}", "language": "java" }, "node_id": "dailycode-d1b9ca19b0a24258833ae33eac8f8ee6", "license": "csdn.net", "created_at": 1637894161, "topic_link": "https://bbs.csdn.net/topics/600470114" }