判断字符串是不是合法

Posted dabu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断字符串是不是合法相关的知识,希望对你有一定的参考价值。

示例:

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     }

结果:

技术图片

 

以上是关于判断字符串是不是合法的主要内容,如果未能解决你的问题,请参考以下文章

输入一个字符串,判断其是不是是C的合法标识符。用c语言编写程序。

java中如何判断输入的日期是不是合法

c++判断ip地址是不是合法

判断字符串是不是合法

谁有C语言判断电话号码的合法性的源代码

java中怎么做到判断输入的日期是不是合法