leectode20-Valid Parentheses

本文介绍了一种使用栈数据结构来判断字符串中括号是否有效配对的方法。通过遍历字符串,利用栈记录未闭合的括号,当遇到闭合括号时,检查其是否与栈顶的开括号匹配,若全部匹配且栈最终为空,则字符串有效。

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

request: Given a string containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.

An input string is valid if:

Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.

Example 1:

Input: “()”
Output: true
Example 2:

Input: “()[]{}”
Output: true
Example 3:

Input: “(]”
Output: false
Example 4:

Input: “([)]”
Output: false
Example 5:

Input: “{[]}”
Output: true

思路一:用stack记录正向括号,每当遇到反向括号时,将stack中pop出来一个,检查这个正括号是否与正括号一样,如果一样,则返回true,如果不一样,则返回false,直到最后,检查stack是否为空。

public class Solution{
		public boolean isValid(String s){
						Stack<Character> mark=new Stack<Character>();
						for(int i=0;i<s.length();i++){
								if(s.charAt(i)=='('  ||s.charAt(i)=='['  ||  s.charAt(i)=='}'){
								         mark.push(s.charAt(i));
								 }else if(s.charAt(i)==')'    || s.charAt(i)==']' || s.charAt(i)=='}')
								        if(mark.isEmpty())
								        		return false;
								        char cur=mark.pop();
								        if(cur=='(' &&s.charAt(i)!=')')
								        		return false;
								        if(cur=='['  &&s.charAt(i)!=']')
								        		return false;
								        if(cur=='{'  &&s.charAt(i)!='}')
								        		return false;
								  }
					   }
					   if(mark.isEmpty())		return true;
					   return   false;
	 }
}

Python:利用字典,找出对应,利用stack,同上面的道理。
class Solution: def isValid(self,s): stack=[] lookup={"(": ")"; "[": "]"; "{": "}" } for parentheses in s: if parentheses in lookup: stack.append(parenthese) elif len(stack)==0 or lookup[stack.pop()]!=parentheses: return flase return len(stack)==0
小梦想家的leetcode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值