记录在leetcode刷的题
题目:leetcode20(有效的括号)
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
题目地址:
leetcode20
代码实现(java)
为得是让左右括号匹配。这是一次对栈的理解和使用!
public class leetcode20 {
public boolean isValid(String s) {
int length = s.length();
if(length % 2 != 0){
return false;
}
Stack<Character> stack = new Stack<>();
//使用map可以直接判断是否为左括号,并匹配对应的右括号
HashMap<Character,Character> map = new HashMap<>();
map.put('(',')');
map.put('[',']');
map.put('{','}');
for (int i = 0;i < length;i++){
char c = s.charAt(i);
//每次比较括号是否是左边的
if (map.containsKey(c)){
//左边的括号入栈
stack.push(c);
}
else if (!stack.isEmpty()){
//右边的括号每次与栈顶元素进行对比,是否匹配
if (map.get(stack.pop()) != c){
//左右括号不匹配
return false;
}
}
else
return false;
}
//最后还需判断栈中元素是否全部配对
if (stack.isEmpty()){
return true;
}else
return false;
}
}

1389

被折叠的 条评论
为什么被折叠?



