题解 | #判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭#

有效括号序列

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

标题

给出一个仅包含字符'('40,')'41,'{'123,'}'125,'['91和']'93,的字符串,判断给出的字符串是否是合法的括号序列

括号必须以正确的顺序关闭,"()"和"()[]{}","([])"都是合法的括号序列,但"(]"和"([)]"不合法。*/

  1. 新建包,包名为 jiandan,新建类,类名为 NC52
  • 题解:

这个题目我们可以利用栈 后进先出 的思想来解决问题

  1. 首先是把字符串转变为字符数组
  2. 对字符数组进行遍历
  3. 如果遍历到(,则往栈中添加相应的右括号;[和{也一样
  4. 当([{都不是,就只能是遍历到右括号了,那么从栈中取出元素pop,如果遍历到的该右括号元素与栈顶元素不相同,则不合法。
  5. 遍历完数组,我们判断栈中是否为空,如果里面还有元素,则不合法;
package jiandan;

import java.util.Stack;

public class NC52
{
	public static void main(String[] args) {
		System.out.println(isValid("([])"));
	}
	public static boolean isValid (String s) {
		Stack<Character> stack = new Stack<>();
		for(char c : s.toCharArray()){
			if(c == '(') stack.push(')');
			else if(c == '[') stack.push(']');
			else if(c == '{')stack.push('}');
			else if(stack.isEmpty() || c != stack.pop()) return false;
		}
		return stack.isEmpty();
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务