多种方式,有效括号
方法1:这是力扣一个大佬的很妙的方式
/*
* 判断括号是否有效,心得:在多种可能的情况下可以使用hashmap存储所有可能性
*
*/
static boolean kuohao(String s) {
Stack<Character> stack = new Stack<Character>();
for(int i=0;i<s.length();i++) {
char ch=s.charAt(i);
if(ch == '(')
stack.push(')');
else if(ch == '[')
stack.push(']');
else if (ch == '{')
stack.push('}');
else {
if(stack.isEmpty() || stack.pop() != ch)
return false;
}
}
return stack.isEmpty();
}
方法2:这个也是力扣用户的方法
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
HashMap<Character, Character> map = new HashMap<Character, Character>();
map.put(')','(');
map.put(']','[');
map.put('}','{');
for(int i=0;i<s.length();i++) {
char ch=s.charAt(i);
if(map.containsKey(ch)) {
if(stack.isEmpty() || stack.peek() != map.get(ch)) {
return false;
}
else {
stack.pop();
}
}
else {
stack.push(ch);
}
}
return stack.isEmpty();
}
}
方法3:
自己写的方法
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for(int i=0;i<s.length();i++) {
if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{') {
stack.add(s.charAt(i));
}
else{
if(stack.isEmpty())
return false;
if(s.charAt(i) == ')' && stack.peek() == '(')
stack.pop();
else if(s.charAt(i) == ']' && stack.peek() == '[')
stack.pop();
else if(s.charAt(i) == '}' && stack.peek() == '{')
stack.pop();
else
return false;
}
}
if(stack.size() == 0)
return true;
return false;
}
}