【发布时间】:2020-08-16 09:16:05
【问题描述】:
我目前正在尝试这个问题,并且似乎不断收到这个StringOutOfBoundsException,有人可以向我解释为什么吗?
当我退出 while 循环时,似乎我输入错误 endPtr--;
class Solution {
public boolean isPalindrome(String s) {
if (s == null) {
throw new IllegalArgumentException("Illegal input!");
}
if (s.length() <= 1) {
return true;
}
int startPtr = 0;
int endPtr = s.length() - 1;
while (startPtr < endPtr) {
while (startPtr < endPtr && !Character.isLetterOrDigit(s.charAt(startPtr))) {
startPtr++;
}
//ERROR while (startPtr < endPtr && !Character.isLetterOrDigit(s.charAt(endPtr))) {
//endPtr--;
//}
if (startPtr < endPtr && Character.toLowerCase(s.charAt(startPtr)) != Character.toLowerCase(s.charAt(endPtr))) {
return false;
}
startPtr++;
endPtr++;
}
return true;
}
}
【问题讨论】:
-
如果您包含代码,请将其粘贴为文本。
-
我可以建议您在while循环中放置一个System.out.println()语句来查找endPtr的值吗?或者使用调试器。
-
因为 endPtr 要么低于 0,要么在字符串的长度或更高。一些简单的调试会告诉你哪个。
标签: java palindrome