有效的括号
2022-02-03 本文已影响0人
Airjoden
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1、左括号必须用相同类型的右括号闭合。
2、左括号必须以正确的顺序闭合。
解题步骤
package math;
import java.util.*;
public class Solution {
public boolean isValid(String s){
int n = s.length();
if (n % 2 == 1){
return false;
}//字符串为单数返回false
Map<Character, Character> pairs = new HashMap<Character, Character>(){{
put(')','(');
put(']','[');
put('}','{');
}}; //创建哈希表左右括号对应
Deque<Character> stack = new LinkedList<Character>(); //创建栈
for (int i = 0; i < n; i++){
char ch = s.charAt(i); //s字符串随下标输出对应字符
if (pairs.containsKey(ch)){ //根据哈希表判断ch是否为右括号 containsKey(ch)表示哈希表里key为ch是否存在
if (stack.isEmpty() || stack.peek()!=pairs.get(ch)){ //栈为空 或 栈顶不为左括号pairs.get(ch)取key为ch的值
return false;
}
stack.pop(); //将栈顶弹出
} else {
stack.push(ch); //将ch字符入栈
}
}
return stack.isEmpty();
}
}