import java.util.*; public class Solution { /** * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { // write code here Stack<Character> stk = new Stack<Character>();//创建stack对象,辅助栈 for (int i = 0; i < s.length(); i++) { //charAt(i) 函数 是获取字符串中i位置的字符 str.charAt(i)的意思是第i个字符在字符串str中所占的位置 if (s.charAt(i) == '(' ) { //当为(字符时,将匹配字符入栈 stk.push(')'); } else if (s.charAt(i) == '[' ) { //当为[字符时,将匹配字符入栈 stk.push(']'); } else if ( s.charAt(i) == '{' ) { //当为{字符时,将匹配字符入栈 stk.push('}'); } else { //三种都不满足时,判断当前字符是否与栈顶元素一样(栈非空时) if (stk.empty() || stk.pop() != s.charAt(i)) return false; //stk.pop(); } } return stk.empty(); } }
本题总结:
1、stack <int> stk
1:stk.push(x)
压入栈---进栈
2: stk.pop()
出栈
3: stk.size()
统计栈内有多少个元素
4: stk.empty()
它的作用跟stk.size() == 0是一样的
5: stk.top()
获取栈顶元素,但是不会弹出
2、Stack<Character> stk = new Stack<Character>(); 字符类型
charAt(i) 函数 是获取字符串中i位置的字符
str.charAt(i)的意思是第i个字符在字符串str中所占的位置