有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
思路:
代码:
package 算法;
import java.util.Stack;
/**
* @Description: 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
*
* 有效字符串需满足:
*
* 左括号必须用相同类型的右括号闭合。
* 左括号必须以正确的顺序闭合。
* 每个右括号都有一个对应的相同类型的左括号。
* @Author: XiQiXuan
* @Date: 2023/7/12
**/
public class day05 {
public static boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if ( c=='[' || c=='{' || c=='('){
// 左括号入栈
stack.push(c);
}else {
if (stack.isEmpty()){
return false;
}
char peek = stack.peek(); //栈顶元素
if ((c == ')' && peek == '(') ||
(c == ']' && peek == '[') ||
(c == '}' && peek == '{')) {
// 右括号与栈顶括号匹配,弹出栈顶
stack.pop();
}else {
return false;
}
}
}
return stack.isEmpty();
}
public static void main(String[] args) {
boolean valid = isValid("({)}");
System.out.println(valid);
}
}