版权声明:文章为作者原创,若要转载请获得作者同意。尊重版权,从你我做起! https://blog.csdn.net/qq_37768971/article/details/88022674
一、题目要求:
Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
二、题目分析:
1.使用栈的数据结构方式
2.先判断是否是‘(’ 、‘[’、'{',是的话依次入栈,不是的话则pop栈内元素,判断是否匹配
3.注意所有输入元素结束后要判断栈内是否还有元素。
三、具体代码:
package IMUHERO;
import java.util.Stack;
class Solution {
public boolean isValid(String s) {
Stack<Character>stack=new Stack<>();
for (int i=0;i<s.length();i++){
char a=s.charAt(i);
if (a=='('||a=='['||a=='{'){
stack.push(a);
}
else {
if (stack.isEmpty())return false;
char topStack=stack.pop();
if (a ==')' &&topStack!='(') return false;
if (a ==']' &&topStack!='[') return false;
if (a =='}' &&topStack!='{') return false;
}
}if (!stack.isEmpty())return false;else return true;
}
}
main函数用于测试功能是否正确:
package IMUHERO;
public class main {
public static void main (String[]args){
Solution s=new Solution();
System.out.println(s.isValid("()"));
System.out.println(s.isValid( "()[]{}"));
System.out.println(s.isValid("(]"));
System.out.println(s.isValid("([)]"));
System.out.println(s.isValid("{[]}"));
}
}
result:
true
true
false
false
true
________________________________________________________
与leetcode上的结果相同: