题目说明
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()" 输出:true
示例 2:
输入:s = "()[]{}" 输出:true
示例 3:
输入:s = "(]" 输出:false
示例 4:
输入:s = "([)]" 输出:false
示例 5:
输入:s = "{[]}" 输出:true
提示:
- 1 <= s.length <= 104
- s 仅由括号 '()[]{}' 组成
Related Topics
解决方案
package leetcode.editor.cn;
import java.util.*;
/**
* 有效的括号
*
* @author 沙漠渔
* @date 2022-01-26 15:03:18
*/
public class 有效的括号 {
static
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public boolean isValid(String s) {
Map<Character, Character> map = new HashMap<Character, Character>() {{
put(')', '(');
put(']', '[');
put('}', '{');
}};
Deque<Character> deque = new ArrayDeque<>();
for (int i = 0; i < s.length(); i++) {
if (map.containsKey(s.charAt(i))) {
if (!Objects.equals(deque.poll(), map.get(s.charAt(i)))) {
return false;
}
} else {
deque.push(s.charAt(i));
}
}
if (deque.size() == 0) {
return true;
} else {
return false;
}
}
}
//leetcode submit region end(Prohibit modification and deletion)
static class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
}
public ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
/**
* 最终测试主方法
*/
public static void main(String[] args) {
Solution solution = new Solution();
System.out.println(solution.isValid("(([))"));
}
}
评论区