gpt4 book ai didi

java - 使用递归进行双字符串比较

转载 作者:搜寻专家 更新时间:2023-10-31 08:28:59 24 4
gpt4 key购买 nike

我在编程 II 课上遇到了一些问题,并且碰壁了,想知道是否有人可以提供帮助?

问题要求用户输入一个字符串,程序将输入的字符串反转,然后将反转的字符串与原始字符串进行比较,这必须递归完成。

到目前为止我有:

public class question1 
{
public static void main(String args[])
{

String input = JOptionPane.showInputDialog(null, "Please enter a sentence to determine if it is a palindrome.");
String backwardsinput = Reverse(input);
System.out.println(backwardsinput);
boolean Palindrome = PalindromeCheck(backwardsinput, input);

if (Palindrome == true)

{
JOptionPane.showMessageDialog(null,"That is a palindrome!");
}

if (Palindrome == false)

{
JOptionPane.showMessageDialog(null,"That is not a palindrome");
}

}

public static String Reverse (String input)
{
if (input.length() <= 1)
return input;

else
{
char x = input.charAt(input.length()-1);
return x+Reverse(input.substring(0,input.length()-1));
}

}



public static boolean PalindromeCheck (String backwardsinput, String input)
{

if(input.length() == 0 || input.length() == 1)
return true;

if(backwardsinput.charAt(0) == input.charAt(input.length()-1))
return PalindromeCheck(backwardsinput.substring(1, backwardsinput.length()-1), input.substring(1, input.length()-1));

else
return false;

}
}

我的问题是,它告诉我一切都是回文,我一遍又一遍地看着它,但不明白为什么!

最佳答案

您正在做两次工作(某种程度上)。

if(backwardsinput.charAt(0) == input.charAt(input.length()-1))
^^^^^^^^^^^^^^^^

应该是

if (backwardsinput.charAt(0) == input.charAt(0))
^

你差不多明白了:-)


另一种表达方式

if (cond)
return something;
else
return false;

return cond && something;

因此你的最后一行可以写成

return backwardsinput.charAt(0) == input.charAt(0) &&
palindromeCheck(backwardsinput.substring(1, backwardsinput.length() - 1),
input.substring(1, input.length() - 1));

相关问题/答案:

关于java - 使用递归进行双字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7874779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com