括号序列

括号序列

http://www.nowcoder.com/questionTerminal/37548e94a270412c8b9fb85643c8ccc2

思路:
数据结构:栈
求字符串长度,然后根据长度遍历整个字符串charAt(i),
(1)遇到左括号就入栈
(2)否则看栈是否为空,为空加返回false; 不为空,接着判断遇到的如果是右括号并判断右括号对应的左括号是否和出栈的元素相匹配,不匹配就直接返回false。
(3)最后判断栈里是否还有元素,即判断栈是否为空,不为空说明有落单的左括号,为空说明是合法的括号序列。

import java.util.*;


public class Solution {
    /**
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    public boolean isValid (String s) {
        // write code here
        Stack<Character> stack = new Stack<Character>();
        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{'){
                stack.push(s.charAt(i));
            }else {
                if(stack.isEmpty()){
                    return false;
                }
                if(s.charAt(i) == ')' && stack.pop() != '('){
                    return false;
                }
                if(s.charAt(i) == ']' && stack.pop() != '['){
                    return false;
                }
                if(s.charAt(i) == '}' && stack.pop() != '{'){
                    return false;
                }

            }
        }
        return stack.isEmpty();
    }
}
全部评论

相关推荐

头像
昨天 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
头像
10-22 19:18
上海大学 后端
jopajhhdjwnqk:水印都叠杀人书了
点赞 评论 收藏
分享
吃不饱的肱二头肌很想退休:tnnd 我以为选妹子呢,亏我兴高采烈的冲进来😠
投递快手等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务