如何确定文本是否具有平衡分隔符?

我有这个问题,

编写一个函数来确定文本是否具有平衡分隔符。 有效分隔符对是(),[],{}和。 它们可能是嵌套的。 此外,确定文本分隔符’和’正确匹配。

我顺便在java编码..

对于每个测试行,如果它具有平衡分隔符,则输出为“1”,否则为“0”。

下面的例子,

4 --- 0 {123} --- 1 {qweqwe{sdad} --- 0 

问题是,如何在java代码中编写,检查这对有效分隔符是否匹配? 对不起,我对分隔符知之甚少。

以下是我的代码..

 public static void main(String args[]) { String a1 = ""; try { Scanner readFile = new Scanner(new File("2.in.txt")); while (readFile.hasNextLine()) { a1 = readFile.nextLine(); System.out.println(a1); if (a1.equals("18")) { System.out.println("0"); } else { System.out.println("1"); } } } catch (FileNotFoundException ex) { ex.printStackTrace(); return; } } 

看看这段代码 ,它解决了类似的任务。

 import java.util.Stack; class BracketChecker { private String input; public BracketChecker(String in) { input = in; } public void check() { Stack theStack = new Stack(); for (int j = 0; j < input.length(); j++) { char ch = input.charAt(j); switch (ch) { case '{': case '[': case '(': theStack.push(ch); break; case '}': case ']': case ')': if (!theStack.isEmpty()) { char chx = theStack.pop(); if ((ch == '}' && chx != '{') || (ch == ']' && chx != '[') || (ch == ')' && chx != '(')) System.out.println("Error: " + ch + " at " + j); } else System.out.println("Error: " + ch + " at " + j); break; default: break; } } if (!theStack.isEmpty()){ System.out.println("Error: missing right delimiter"); } } } public class MainClass { public static void main(String[] args) { String input; input = "[]]()()"; BracketChecker theChecker = new BracketChecker(input); theChecker.check(); } } 

此问题的一般解决方案是使用堆栈。 对于每个输入字符串,从空堆栈开始:

  • 遇到开放式支架时,将其推入堆叠。
  • 遇到关闭括号时,从堆栈弹出并与关闭括号进行比较,以查看它们是否匹配。 如果没有,则返回false 。 如果是,请继续。

完成字符串检查后,检查堆栈是否为空。 如果是,则返回true ,否则返回false

对于引号''的情况,如果你不允许引用在同一引号内,并且你不考虑转义语法,那么解决方案应该是相同的。