Java编程(1) 有效的括号

前言

好长时间没做编程题了,做个这么简单的都这么生疏,还是得多练啊。

题目

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。

有效字符串需满足:

 左括号必须用相同类型的右括号闭合。
 左括号必须以正确的顺序闭合。
 注意空字符串可被认为是有效字符串。

分析思路

一个很典型的栈的应用,栈作为一个先进后出的数据结构,很适合这个问题。

  1. 初始化一个队列。
  2. 如果是‘[’或者‘{’或者‘(’,就推入堆栈。
  3. 如果是‘]’或者‘}’或者‘)’,就把堆栈顶上的元素pop出来,看看有没有匹配的

代码



import java.util.Stack;

public class ValidBrackets {
	
	    public static boolean isValid(String s) {
	    	Stack<Character> stack1 = new Stack<>();
	        
	    	for (int i = 0; i < s.length(); i++) {
	    		char ch = s.charAt(i);
	    		if (ch =='[' || ch == '{' || ch == '(') {
	    			stack1.push(ch);
	    			
					
				}
	    		else {
	    			if (stack1.isEmpty()) {
	    				return false;
						
					}
	    			char topch = stack1.pop();
					if (ch == ']' && topch!='[' ) {
						return false;
					}
					else if (ch == '}' && topch!='{') {
						return false;
						
					}else if (ch == ')' && topch!='(') {
						return false;
					}
					
				}
				
			}
	    	return stack1.isEmpty();
	        
	    }
	    
	    public static void main(String[] args) {
			String s1 = " ";
			boolean a = isValid(s1);
			System.out.print(a);
			
		}
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值