字符串括号成对匹配

最近在准备面试时,发现有这样一个算法题目:判断一个字符串中是否包含匹配的括号({}、()、[])?如何实现其算法?

其实,要知道字符串括号成对匹配,这个问题也是在面试中常见的算法问题,获取有效的思路很是重要,当然我们可以借助Stack的特性处理!

思路: 

  1. 使用栈
  2. 遇到左括号入栈
  3. 遇到又括号出栈,如果匹配则最后栈为空,不匹配则栈不为空

那就直接上代码,毕竟几乎所有的面试官都喜欢动手能力强的选手

package www.supermaster.cn.text;

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

public class StackMatchText
{
	// 设置栈存储容器
	private static final Map<Character, Character> brackets = new HashMap<>();
	// 初始化匹配数据
	static
	{
		brackets.put(')', '(');
		brackets.put(']', '[');
		brackets.put('}', '{');
	}

	//
	public static void main(String[] args)
	{
		//String text = "qqw1{2efe"; // false
		String text = "w1 {} 2efe"; // true
		System.out.println(isMatch(text));
	}

	//
	public static boolean isMatch(String text)
	{
		if (text == null)
		{
			return false;
		}
		Stack<Character> stack = new Stack<Character>();

		for (char ch : text.toCharArray())
		{
			if (brackets.containsValue(ch))
			{
				stack.push(ch);
			}
			else if (brackets.containsKey(ch))
			{
				if (stack.empty() || stack.pop() != brackets.get(ch))
				{
					return false;
				}
			}
		}
		return stack.isEmpty();
	}
}

这篇文章主要是针对面试情况,代码才是主要展示显示,后续会继续完善!读者有好的提议请留言,促使我们共同进步!!

----------------------------------------------------------------------------------------
作者:编码世界
来源:CSDN
原文:https://blog.csdn.net/dgxin_605/article/details/92375228
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/dgxin_605/article/details/92375228