2
public static String check(String str)
{
String result = "";
// Strips the string down to only letters a-z and numbers 0-9, and makes it lowercase
str = str.replaceAll("[^A-Za-z0-9]", "");
str = str.replaceAll("\\s+","");
str = str.toLowerCase();
if (str.length() < 1)
{
result = "The string is a palindrome";
}
else if ((str.charAt(str.length() - 1)) == (str.charAt(0)))
{
StringBuilder sb = new StringBuilder(str);
sb.deleteCharAt(0);
sb.deleteCharAt(sb.length()-1);
check(sb.toString());
}
else
{
result = "The string is not a palindrome";
}
return result;
}
私は回文を含めてこのメソッドにいくつかの文字列を渡そうとしました。なんらかの理由で、デフォルト値の ""が返され続けます。なぜメソッドは文字列が回文かどうかについての情報を返しませんか?帰納的回文関数はデフォルトの結果値を返し続けますか?
おそらく、 'check(sb.toString());'行を変更する必要があります。 'result = check(sb.toString());'になるようにします。 – DB5
また、StringBuilder全体の代わりに 'check(str.substring(1、str.length() - 1));'を実行する方が簡単です。 –