有效括号--算法
public boolean isValid(String userStr) {
if(userStr.length() % 2 != 0){
return false;
}
//创建hashMap对象
HashMap<Character, Character> map = new HashMap<>();
//存值
map.put(')', '(');
map.put(']', '[');
map.put('}', '{');
//创建栈对象
Stack<Character> stack = new Stack<>();
//判断传进来的值是否是括号
//将字符串转成char数组,遍历
for (char c : userStr.toCharArray()) {
//集合中是否包含该对应的键
if (map.containsKey(c)) {
//有就说明接收到了右括号,要检测栈最上面的是否和改键的值相同,
// 判断栈是否为空与最上面的是否和改键的值相同,
if (stack.isEmpty() || stack.peek() != map.get(c)) {
//满足以上情况,就说明不存在,返回一个false
return false;
}
//否则就说明存在
//就将最顶上的栈弹出
stack.pop();
} else {
//如果是左括号就压进栈中
stack.push(c);
}
}
//执行完以上算法,栈就变空了
//所以这里判断一下就可以了
return stack.isEmpty();
}
* 博客文章部分截图及内容来自于学习的书本及相应培训课程,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。
* 备注:王子威
* 我的网易邮箱:wzw_1314_520@163.com