我写了我的方法版本,该方法可以测试单词是否是回文。用奇数长度的字符串似乎可以很好地工作,但是用偶数长度的字符串进行测试时会发生“字符串超出范围异常”错误。
任何帮助将不胜感激!
public static boolean palindrome(String s, int start, int end) {
int length = s.length();
if (length%2 != 0 && start != end) {
if (s.charAt(start) == s.charAt(end)) {
return palindrome(s,start+1,end-1);
}
else {
return false;
}
}
else if(length%2 == 0 && (start+1) != (end-1)) {
if (s.charAt(start) == s.charAt(end)) {
return palindrome(s,start+1,end-1);
}
else {
return false;
}
}
else if(length%2 != 0 && start == end) {
return true;
}
else if(length%2 == 0 && start+1 == end-1) {
if (s.charAt(start+1) == s.charAt(end-1)) {
return true;
}
else {
return false;
}
}
else {
return false;
}
}
答案 0 :(得分:1)
我认为您的代码有点不必要,很复杂,您正在使用索引来执行Java中子字符串可以执行的操作。此外,通过在基本案例中考虑它们,您可以避免偶数或奇数的许多情况。我试图保持您的方法,并尽可能减少代码。我认为这要干净得多。在基本情况下,如果数字为奇数,它将以1结束,如果为偶数,将以2结束。
listen_address: {{ nodes }}