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中所占的位置

京公网安备 11010502036488号