Я пишу функцию для выполнения этих требований: Для строки верните истину, если она является гнездом из нуля или нескольких пар скобок, например (())
или ((()))
. Предложение: проверьте первый и последний символы, а затем повторите то, что внутри них.Почему этот рекурсивный метод работает?
nestParen("(())") → true
nestParen("((()))") → true
nestParen("(((x))") → false
Правильное решение, показанное на сайте:
public boolean nestParen(String str) {
if (str.equals("")) return true;
if (str.charAt(0) == '(' && str.charAt(str.length()-1) == ')')
return nestParen(str.substring(1,str.length()-1));
else
return false;
}
Я не понимаю, почему это работает. Если заданная строка имеет символ, отличный от (
, как "
, не будет ли он ударить в случае else и вернуть false, а не перейти к следующему (
?
Вы правы; 'nestParen (" ((x)) ")' вернет false. –
Да, это будет, как утверждают требования. –
Ни одна из этих строк не содержит символа '' '. – AdamMc331