如何解决即使我在String数组的范围内,为什么也得到StringOutOfBoundsException?
我目前正在尝试解决此问题,并且似乎一直在遇到此问题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;
}
}
解决方法
在主循环的最后,您要增加endPtr。
startPtr++;
endPtr++;
这样做,您是将String的结尾定位在实际结尾之后。
然后是错误。
而且,由于条件,您正在创建一个无限循环
while (startPtr < endPtr)
将始终为真。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。