Java 开放式和封闭式支架的验证方法

Java 开放式和封闭式支架的验证方法,java,brackets,Java,Brackets,我是Java初学者,我必须实现一个或多个方法来验证开括号和闭括号。例如:我们有()(())-这是真的,或者如果我们有())-假。在我看来,似乎有一些简单的解决办法,但我没有任何想法。。。 我没有要求您编写解决方案(如果您愿意,我不会阻止您:D),但是一些提示会很好。遍历字符串,并保留当前打开的、未关闭的括号的计数器。如果遇到“(”,则增加计数器;如果遇到“”,则减少计数器。 如果计数在任何时候都小于0,或者在检查每个字符后不是0,则该字符串无效 只是为了好玩一点丑陋和低效的版本: System.

我是Java初学者,我必须实现一个或多个方法来验证开括号和闭括号。例如:我们有()(())-这是真的,或者如果我们有())-假。在我看来,似乎有一些简单的解决办法,但我没有任何想法。。。
我没有要求您编写解决方案(如果您愿意,我不会阻止您:D),但是一些提示会很好。

遍历字符串,并保留当前打开的、未关闭的括号的计数器。如果遇到“(”,则增加计数器;如果遇到“”,则减少计数器。 如果计数在任何时候都小于0,或者在检查每个字符后不是0,则该字符串无效

只是为了好玩一点丑陋和低效的版本:

System.out.println(s.chars().map((i) -> 81 - i * 2).reduce(0, (a, b) -> a >> 31 | a + b) == 0);

遍历字符串并保留当前打开、未关闭括号的计数器。如果遇到“(”,则增加计数器;如果遇到“”,则减少计数器。 如果计数在任何时候都小于0,或者在检查每个字符后不是0,则该字符串无效

只是为了好玩一点丑陋和低效的版本:

System.out.println(s.chars().map((i) -> 81 - i * 2).reduce(0, (a, b) -> a >> 31 | a + b) == 0);

仅供参考,此解决方案需要Java 8或更高版本。好主意。谢谢)仅供参考,此解决方案需要Java 8或更高版本。现在,这是一个好主意。(谢谢)