BM44 有效括号序列

有效括号序列

https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2

解题思路:

主要利用栈的先进后出的特性,可以去匹配{}[]()的成对出现。

做得好的:只要有思路,我就可以自己实现代码。 well done~!

做得不好:对栈的特性没有深入理解到各种案例中,特别是类似这种括号成对出现的匹配到。

还有,字符串 char的 数据对象是 Character ,下次不要再用 char_x+"",来转成String了,增加了堆内存分配。

import java.util.*;


public class Solution {
    /**
	 * 我的解法
     * @param s string字符串 
     * @return bool布尔型
     */
   	public boolean isValid (String s) {
        if(s==null || s.length()==0) {
            return false;
        }
        Stack<String> stack = new Stack<String>();
        for(int i=0; i<s.length(); i++) {
            String node =  s.charAt(i)+"";
            if(stack.isEmpty()) {
                stack.push(node); 
            } else {
                String top = stack.peek();
                if("]".equals(node) && "[".equals(top)) {
                    stack.pop();
                } else if("}".equals(node) && "{".equals(top)) {
                    stack.pop();
                } else if(")".equals(node) && "(".equals(top)) {
                    stack.pop();
                } else {
                    stack.push(node);
                }
            }
        }
        return stack.isEmpty();
    }

  	/**
	 * 官方简洁做法
	 */
    public boolean isValid (String s) {
        if(s==null || s.length()==0) {
            return false;
        }

        Stack<Character> stack = new Stack<>();
        for(int i=0; i<s.length(); i++) {
            char node = s.charAt(i);
            if('(' == node) {
                stack.push(')');
            } else if('{'== node) {
                stack.push('}');
            } else if('[' == node) {
                stack.push(']');
            } else if(stack.isEmpty() || stack.pop()!=node) {
                return false;
            }
        }
        return stack.isEmpty();
    }


}
全部评论

相关推荐

mjasjon:这种trash中厂 简历过筛概率比大厂还低(除阿里系)
投递哔哩哔哩等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务