20-有效的括号

该博客介绍了一个用于判断给定字符串中括号是否有效的Java实现。代码使用栈数据结构,遵循括号匹配规则,遍历字符串并检查括号的配对。如果遍历结束后栈为空,则字符串有效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。

      括号这种问题有点抽象,参考了下标准答案给出代码。

package likouhot;

import java.util.HashMap;
import java.util.Map;
import java.util.Stack;

/*
 * 20.有效的括号
 */
public class Demo20 {
   
	public boolean isValid(String s) {
         int length = s.length();
         //如果s字符串有奇数个元素,则肯定不满足
		 if(length % 2 ==1) {
        	  return false;
          }
		 Map<Character,Character> map = new HashMap<Character,Character>();
		 map.put(')', '(');
		 map.put(']', '[');
		 map.put('}', '{');
		 char[] chararray = s.toCharArray();
		 Stack<Character> stack = new Stack();
		 for(int i=0;i<length;i++) {
			 char tempchar = chararray[i];
			 if(map.containsKey(tempchar)) {
				 /*
				  * 1.如果栈为空,则相当于第一个元素就有括号的右半部分,肯定不满足
				  * 2.如果栈不为空,则当栈顶元素如果不是括号的左半部分,则肯定不满足
				  * 3.当情况满足时,则将栈顶元素弹出
				  */
				 if(stack.isEmpty() || stack.peek()!=map.get(tempchar)) {
					 return false;
				 }else {
					 stack.pop();
				 }
			 }else {
				 stack.push(tempchar);
			 }
		 }
		 //如果遍历结束后,stack为空,则满足
		 return stack.isEmpty();
    }
	
	public static void main(String args[]) {
		Demo20 demo = new Demo20();
		String s = "((";
		System.out.println(demo.isValid(s));
	}
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunny_daily

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值