首页 > 其他 > 详细

判断字符串是不是合法

时间:2020-04-08 23:45:42      阅读:95      评论:0      收藏:0      [点我收藏+]

示例:

1 输入: "(]"
2 输出: false
3 
4 输入: "{[]}"
5 输出: true

 

 

思想:

  这里我们使用栈。

  遍历输入字符串
  如果当前字符为左半边括号时,则将其压入栈中
  如果遇到右半边括号时,分类讨论:
    1)如栈不为空且为对应的左半边括号,则取出栈顶元素,继续循环
    2)若此时栈为空,则直接返回false
    3)若不为对应的左半边括号,反之返回false

 

 

 

 

代码块:

 1 public static boolean isValid(String s) {
 2         Stack<Character> stack = new Stack();
 3         char[] chars = s.toCharArray();
 4         for (char a: chars) {
 5             if (a == ( || a == { || a == [) {
 6                 stack.add(a);
 7             } else {
 8                 if(stack.isEmpty())
 9                     return false;
10                 if (a == ) && stack.pop() != ()
11                     return false;
12                 if (a == } && stack.pop() != {)
13                     return false;
14                 if (a == ] && stack.pop() != [)
15                     return false;
16             }
17         }
18         return stack.isEmpty();
19     }
20 
21     public static void main(String[] args) {
22         System.out.println(isValid("[{}]"));
23         System.out.println(isValid("((([{}])))"));
24         System.out.println(isValid("]{}()["));
25         System.out.println(isValid("((([]))}"));
26         System.out.println(isValid("{{[]()[]}"));
27     }

结果:

技术分享图片

 

判断字符串是不是合法

原文:https://www.cnblogs.com/dabu/p/12663836.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!