不用map的解法
public boolean isValid(String s) {
//输入的字符串为空,直接返回true
if(s.isEmpty())
return true;
//新建一个栈
Stack<Character> stack=new Stack<Character>();
//遍历传入的字符串
//如果时"(","{","[" 就向栈中放入")","}","]"
//如果栈空,也就是,没有"(","{","["这些字符;或者有这些字符,但取出栈顶元素与当前遍历值不同的话,返回false
for(char c:s.toCharArray()){
if(c=='(')
stack.push(')');
else if(c=='{')
stack.push('}');
else if(c=='[')
stack.push(']');
else if(stack.empty()||c!=stack.pop())
return false;
}
if(stack.empty())
return true;
return false;
}
测试解释:
1、如果传入数据是“{ [ (”,就向栈中放入")","}","]",那么这个栈并不为空,就会执行最后一行return false;
2、如果传入数据是“( ) { } [ ]”,遍历 "(" 时栈中先放入 ")" ,当遍历到 ")" 时,走else if判断,stack.pop()取出栈顶元素为 ")" ,与正好要遍历的元素相同,返回true;接着遍历后边的元素,如果全都符合则返回true。
标签:遍历,return,--,stack,括号,false,else,true,LeetCode From: https://www.cnblogs.com/nliu/p/17620710.html