- 解:
- public boolean isValid(String s) {
- if(s.length()==0){//空串认为是有效的
- return true;
- }
- Stack
stack=new Stack<>();//建一个字符型的栈 - for(char ch:s.toCharArray()){//将字符串转为一个字符数组,并遍历
- if(ch==’(‘ || ch==’[‘ || ch==’{‘){//如果是左括号就疯狂入栈
- stack.push(ch);
- }else{//如果是右括号进行下面的操作
- if(stack.isEmpty()){//如果栈为空,说明没有跟当前右括号配对的,即右括号多,返回false
- return false;
- }else{//栈不空,则栈顶元素出栈(pop)跟当前右括号配对
- char temp=stack.pop();
- if(ch==’)’){
- if(temp!=’(‘){
- return false;
- }
- }else if(ch==’]’){
- if(temp!=’[‘){
- return false;
- }
- }else if(ch==’}’){
- if(temp!=’{‘){
- return false;
- }
- }
- }
- }
- }
- return stack.isEmpty()?true:false;//如果栈为空,说明配对成功,不为空,说明左括号多
- }
题目描述:
示例:
解题思路:
用栈
