做网站设计的需要什么材料,外贸网站建设流程,做图片网站 侵权,wordpress-5.6.20下载题目 给定一个只包括 (#xff0c;)#xff0c;{#xff0c;}#xff0c;[#xff0c;] 的字符串 s #xff0c;判断字符串是否有效。有效字符串需满足#xff1a;1、左括号必须用相同类型的右括号闭合。
2、左括号必须以正确的顺序闭合。
3、每个右括号都有一个对应的相…题目 给定一个只包括 (){}[] 的字符串 s 判断字符串是否有效。有效字符串需满足1、左括号必须用相同类型的右括号闭合。
2、左括号必须以正确的顺序闭合。
3、每个右括号都有一个对应的相同类型的左括号。 示例 示例 1输入s ()
输出true
示例 2输入s ()[]{}
输出true
示例 3输入s (]
输出false 解题思路 栈。核心思路是判断括号是否匹配遍历串如果是左括号就先放着等待后面出现的右括号和其匹配。如果是左括号则取匹配之前暂时存放的左括号看是否匹配。该逻辑和栈的逻辑一直。可以使用栈进行存储遍历中的左括号栈是先进先出先放进的后匹配后放进的先匹配保证了匹配右括号的顺序。代码(Java) // 方法一
import java.util.Stack;
class Solution {public boolean isValid(String s) {if (s null || s.length() 0) {return true;}if (s.length() % 2 1) {return false;}StackCharacter stack new Stack();for (int i 0; i s.length(); i) {char c s.charAt(i);if (c ( || c [ || c {) {stack.push(c);} else {if (stack.isEmpty()) {return false;}char cpop stack.pop();if (!(cpop ( c ) || cpop [ c ] || cpop { c })) {return false;}}}return stack.isEmpty() ? true : false;}
}