【发布时间】:2021-12-15 21:15:02
【问题描述】:
输入:“mnkknm”,其中 n=0 输出:标志总是等于 1 而它应该等于 3 它返回-1 问题是什么 ? 注意:回文意味着例如,如果马拉雅拉姆语的反向也是 马拉雅拉姆语然后它的回文 另一个注意事项:我应该递归编写代码,因为这是一项家庭作业
public static int PalindromeCheck(String x , int n)
{
int flag =0;
if (n+1 !=x.length()/2)
{
char s = x.charAt(n);
char y = x.charAt(x.length()-1-n);
if (s==y)
{ flag++;
System.out.println(flag); // i write it to check the value of the flag
}
return flag+PalindromeCheck(x,n+1) ;
}
if (flag==x.length()/2)
{
return 1;}
else{
return -1;
}
【问题讨论】:
-
为什么需要递归方法呢?很简单,将字符串对半分割,然后取另一半,反转并比较。
-
@Victor 或者只是迭代前半部分,并测试每个字符是否与右侧的相应索引(从长度偏移)匹配。
-
@ElliottFrisch 或者只迭代字符的前半部分,异或它们,迭代后半部分,异或它们并进行比较!与二进制比较一样快!
-
@Victor AFAIK
XOR不起作用 - 是否考虑订购? ("abab"不是回文) |许多值将创建相同的 XOR 值(例如'a' ^ 'g' == 'b' ^ d' == 'c' ^ 'e') -
或者只是反转字符串并检查它是否等于原始字符串。虽然最好在没有案例的情况下进行比较。
标签: java