0%

leetcode 20 Solution

代码解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.demo.s20;

import java.util.Deque;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;

/**
* 有效的括号
* 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
*
* 有效字符串需满足:
*
* 左括号必须用相同类型的右括号闭合。
* 左括号必须以正确的顺序闭合。
*
* 来源:力扣(LeetCode)
* 链接:https://leetcode.cn/problems/valid-parentheses
* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
*/
public class Solution {
public boolean isValid(String s) {
//根据入参判断 不能为奇数
if(s.length() % 2 != 0) {
return false;
}
//符号对
Map<Character, Character> pairs = new HashMap();
pairs.put('(', ')');
pairs.put('[', ']');
pairs.put('{', '}');
//字符串转字符数组
char[] charr =s.toCharArray();
//放入栈中判断
Deque<Character> stack = new LinkedList();
for(int i = 0; i< charr.length ; i++) {
//如果为左侧符号, 符号对key中一定存在,则压栈
if(pairs.containsKey(charr[i])) {
stack.push(pairs.get(charr[i]));
//如果符号对key中不存在,栈中有元素,且栈顶符号等于当前符号,则弹栈
} else if(stack.size()!=0 && stack.peek() == charr[i]){
stack.pop();
continue;
} else {
return false;
}

}
return stack.size() == 0;
}
}