返回信息流在intellij idea上运行没有报错,包括提示的测试用例也是没问题的但是提交的时候就是说有错,代码:
public String ReverseSentence(String str) {
if (str == null || str.length() < 2) {
return str;
}
char[] chars = str.toCharArray();
reverse(chars, 0, chars.length - 1);
int sIndex = 0;
while (chars[sIndex] == ' ') {
sIndex++;
}
int eIndex = sIndex + 1;
while (eIndex < chars.length) {
while (eIndex < chars.length && chars[eIndex] != ' ') {
eIndex++;
}
reverse(chars, sIndex, eIndex - 1);
sIndex = eIndex + 1;
eIndex = sIndex + 1;
}
return String.valueOf(chars);
}
public void reverse(char[] schar, int start, int end) {
if (0 <= start && start < end && end < schar.length) {
while (start < end) {
char c = schar[start];
schar[start] = schar[end];
schar[end] = c;
start++;
end--;
}
}
}
保存并调试显示错误:
您的代码已保存
答案错误:您提交的程序没有通过所有的测试用例
case通过率为60.00%
测试用例:
" "
对应输出应该为:
" "
你的输出为:
java.lang.ArrayIndexOutOfBoundsException: 3
没明白这怎么就数组越界了,明明自己运行都没有报错呀
这是一条镜像帖。来源:北邮人论坛 / java / #58418同步于 2018/1/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【问题】牛客网刷剑指offer,翻转单词顺序列,发生了怎么也看不
xyh1re
2018/1/16镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
逻辑是先翻转字符串,再挨个翻转单词。针对错误提示中的输入样例,不明白为什么会越界
【 在 panshanwhut (潘老师) 的大作中提到: 】
: 没太看懂逻辑,真正牛逼的算法都是简单而优雅的[ema14]
通过『我邮2.0』发布
问题出在这句话
while (chars[sIndex] == ' ') {
sIndex++;
}
比如只有两个空格的字符串,sIndex=2,再去检查chars[sIndex]就越界了。
明白了,感谢
【 在 z574690129 (【意涵团】buppt) 的大作中提到: 】
: while (chars[sIndex] == ' ') {
: sIndex++;
: }
: ...................
通过『我邮2.0』发布
明白了,谢谢!
【 在 buptzrr (咋都叫意涵) 的大作中提到: 】
: 问题出在这句话
: while (chars[sIndex] == ' ') {
: sIndex++;
: ...................
通过『我邮2.0』发布