给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 注意空字符串可被认为是有效字符串。
- 示例 1:
- 输入: “()”
- 输出: true
- 示例 2:
- 输入: “()[]{}”
- 输出: true
- 示例 3:
- 输入: “(]”
- 输出: false
- 示例 4:
- 输入: “([)]”
- 输出: false
- 示例 5:
- 输入: “{[]}”
- 输出: true
import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
Stack<Character> stack = new Stack<>();
if(s.length() == 0 || s == null)return true;
char[] arr = s.toCharArray();
for(int x=0;x<arr.length;x++)
{
if(arr[x] == '['){
stack.push(']');
}
else if(arr[x] == '('){
stack.push(')');
}
else if(arr[x] == '{'){
stack.push('}');
}
else if(stack.isEmpty()||arr[x] != stack.pop() ){//stack.isEmpty()用来判断"]]"这类情况
return false;
}
}
return stack.isEmpty();
}
}