gpt4 book ai didi

java - 递归回文测试不能包含特殊字符

转载 作者:行者123 更新时间:2023-12-01 18:47:26 25 4
gpt4 key购买 nike

我编写了一个递归方法来检查一个单词是否是回文。

但我现在还希望检查字符串中是否有任何特殊字符(*?!<。因此,如果字符串是 ab.ba,则它不是回文。

这是我所拥有的, isAlphanuemerical() 在单步执行时似乎工作正常,但如果我输入 ab.ba,它仍然注册为回文

public static boolean isPal(String s)
{
if(s.length() == 0 || s.length() == 1)
return true;

// Check if String contains any alphanumeric characters
if (isAlphanumeric(s))
return false;


if(s.charAt(0) == s.charAt(s.length()-1))
return isPal(s.substring(1, s.length()-1));//if its not the case than string is not.
return false;
}

还有我的 isAlphaneumerical() 方法

public static boolean isAlphanumeric(String str) {
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (!Character.isLetter(c) && !Character.isDigit(c))
return false;
}
return true;
}

最佳答案

if (isAlphanumeric(s))
return false;

应该是

if (!isAlphanumeric(s))
return false;

此外,您不需要每次都调用 isAlphanumeric(s)。您可以调用它一次,或者更改它,以便它只检查第一个/最后一个字符。您正在检查之前已检查过的内容。

public static boolean isPal(String s)
{
if (!isAlphanumeric(s))
return false;

return _isPal(s);
}

private static boolean _isPal(String s)
{
if (s.length() == 0 || s.length() == 1)
return true;

if (s.charAt(0) == s.charAt(s.length()-1))
return _isPal(s.substring(1, s.length()-1));

return false;
}

private static boolean isAlphanumeric(String str)
{
for (int i = 0; i < str.length(); i++)
{
char c = str.charAt(i);

if (!Character.isLetter(c) && !Character.isDigit(c))
return false;
}
return true;
}

关于java - 递归回文测试不能包含特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17179613/

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