字符串括号成对匹配

一时失言乱红尘 2022-01-14 03:03 262阅读 0赞

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

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

思路:

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

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

  1. package www.supermaster.cn.text;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import java.util.Stack;
  5. public class StackMatchText
  6. {
  7. // 设置栈存储容器
  8. private static final Map<Character, Character> brackets = new HashMap<>();
  9. // 初始化匹配数据
  10. static
  11. {
  12. brackets.put(')', '(');
  13. brackets.put(']', '[');
  14. brackets.put('}', '{');
  15. }
  16. //
  17. public static void main(String[] args)
  18. {
  19. //String text = "qqw1{2efe"; // false
  20. String text = "w1 {} 2efe"; // true
  21. System.out.println(isMatch(text));
  22. }
  23. //
  24. public static boolean isMatch(String text)
  25. {
  26. if (text == null)
  27. {
  28. return false;
  29. }
  30. Stack<Character> stack = new Stack<Character>();
  31. for (char ch : text.toCharArray())
  32. {
  33. if (brackets.containsValue(ch))
  34. {
  35. stack.push(ch);
  36. }
  37. else if (brackets.containsKey(ch))
  38. {
  39. if (stack.empty() || stack.pop() != brackets.get(ch))
  40. {
  41. return false;
  42. }
  43. }
  44. }
  45. return stack.isEmpty();
  46. }
  47. }

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

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

发表评论

表情:
评论列表 (有 0 条评论,262人围观)

还没有评论,来说两句吧...

相关阅读

    相关 字符串括号匹配

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

    相关 括号匹配

    括号配对问题 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 3 描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行