此方法仅适用于xox等小输入,但不适用于像taco cat这样的更复杂的输入。我已反复阅读此代码,但无法解决问题。我假设有一个小错误,因为我在结构上改变了代码,试图调整我的方法并且无法修复它。
import java.util.Scanner;
public class Palindromes
{
static Scanner scan = new Scanner(System.in);
public static void main (String[] args)
{
System.out.println("Enter a string, human:");
String s=scan.nextLine();
if(palindrome(s)){
System.out.print("This is a palindrome, I am amused Earthling.");
}else{
System.out.print("Don't you know to speak only in palindromes to your alien Overlord?");
}
}
public static boolean palindrome(String s){
s.replace(" ","");
if(s.length()<2){
return true;
}else if(s.charAt(0)==s.charAt(s.length()-1)){
return palindrome(s.substring(1,s.length()-2));
}else{
return false;
}
}
}
答案 0 :(得分:3)
要解决两件事:
您忘记将replace
的结果分配回s
,导致您忽略删除空格的结果。尝试:
s = s.replace(" ","");
在将子字符串传递给递归调用时,您有一个一个错误的错误。 ending index of substring
is exclusive,所以你在子字符串的末尾修剪了太多字符。尝试:
return palindrome(s.substring(1,s.length()-1));