字符串括号成对匹配
最近在准备面试时,发现有这样一个算法题目:判断一个字符串中是否包含匹配的括号({}、()、[])?如何实现其算法?
其实,要知道字符串括号成对匹配,这个问题也是在面试中常见的算法问题,获取有效的思路很是重要,当然我们可以借助Stack的特性处理!
思路:
- 使用栈
- 遇到左括号入栈
- 遇到又括号出栈,如果匹配则最后栈为空,不匹配则栈不为空
那就直接上代码,毕竟几乎所有的面试官都喜欢动手能力强的选手
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
版权声明:本文为博主原创文章,转载请附上博文链接!
还没有评论,来说两句吧...