偶数长度字符串的字符串越界错误
String out of bound error with even numbered length strings
我已经编写了测试一个单词是否为回文的方法版本。它似乎适用于奇数长度的字符串,但在使用偶数长度进行测试时会出现字符串超出范围异常错误。
如有任何帮助,我们将不胜感激!
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;
}
}
我认为你的代码有点不必要的复杂,你正在使用索引来做你可以用 java 中的子字符串做的事情。此外,您可以通过在基本情况下考虑偶数或奇数来避免许多情况。我试图保留您的方法并尽可能减少代码。我觉得干净多了。在基本情况下,如果数字是奇数,它将以 1 结束,如果是偶数,它将以 2 结束。
public boolean isPalindrome(String string)
{
if (string.length() > 2) {
if (string.charAt(0) == string.charAt(string.length() - 1)) {
return this.isPalindrome(string.substring(1, string.length() - 1));
} else {
return false;
}
} else if (string.length() == 1) {
return true;
} else {
if (string.charAt(0) == string.charAt(1)) {
return true;
} else {
return false;
}
}
}
我已经编写了测试一个单词是否为回文的方法版本。它似乎适用于奇数长度的字符串,但在使用偶数长度进行测试时会出现字符串超出范围异常错误。
如有任何帮助,我们将不胜感激!
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;
}
}
我认为你的代码有点不必要的复杂,你正在使用索引来做你可以用 java 中的子字符串做的事情。此外,您可以通过在基本情况下考虑偶数或奇数来避免许多情况。我试图保留您的方法并尽可能减少代码。我觉得干净多了。在基本情况下,如果数字是奇数,它将以 1 结束,如果是偶数,它将以 2 结束。
public boolean isPalindrome(String string)
{
if (string.length() > 2) {
if (string.charAt(0) == string.charAt(string.length() - 1)) {
return this.isPalindrome(string.substring(1, string.length() - 1));
} else {
return false;
}
} else if (string.length() == 1) {
return true;
} else {
if (string.charAt(0) == string.charAt(1)) {
return true;
} else {
return false;
}
}
}