Есть ли у каждой открывающей скобки закрывающая?
Есть 3 строки вида
(()) ))(( (()))
Задача: выдать, имеет ли каждая открывающая скобочка соответствующую закрывающуюся:
( - false () - true ()) - false )( - false (())() - true
Мое решение:
public static void main(String[] args) {
String str1 = "(())";
String str2 = "))((";
String str3 = "(()))";
System.out.println("String (())");
System.out.println();
for (int i = 0; i < str1.length(); i++) {
if ((str1.charAt(i) == '(')&& (str1.indexOf(')') > str1.indexOf('('))) {
System.out.println("str1.charAt("+ i+ ")" + str1.charAt(i) + " true ");
} else {System.out.println("str1.charAt("+ i+ ")" + str1.charAt(i)
+ " false ");
}}
System.out.println("String ))((");
System.out.println();
for (int i = 0; i < str2.length(); i++) {
if ((str2.charAt(i) == '(')&& (str2.indexOf(')') > str2.indexOf('('))) {
System.out.println("str1.charAt("+ i+ ")" + str1.charAt(i) + " true ");
} else {
System.out.println("str1.charAt("+ i+ ")" + str2.charAt(i)+ " false ");
}}
System.out.println("String (()))");
System.out.println();
for (int i = 0; i < str3.length(); i++) {
if ((str3.charAt(i) == '(')&& (str3.indexOf(')') > str3.indexOf('('))) {
System.out.println("str1.charAt("+ i+ ")" + str1.charAt(i) + " true
");
} else {
System.out.println("str1.charAt("+ i+ ")" + str3.charAt(i)+ " false ");
}}}}
Ответ соответственно:
String (())
str1.charAt(0)( true
str1.charAt(1)( true
str1.charAt(2)) false
str1.charAt(3)) false
String ))((
str1.charAt(0)) false
str1.charAt(1)) false
str1.charAt(2)( false
str1.charAt(3)( false
String (()))
str1.charAt(0)( true
str1.charAt(1)( true
str1.charAt(2)) false
str1.charAt(3)) false
str1.charAt(4)) false
Мой вопрос: как сделать так, чтоб ответ был
( - false () - true ()) - false
Источник: Stack Overflow на русском