BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #58418同步于 2018/1/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

【问题】牛客网刷剑指offer,翻转单词顺序列,发生了怎么也看不

xyh1re
2018/1/16镜像同步6 回复
在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 没明白这怎么就数组越界了,明明自己运行都没有报错呀
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
panshanwhut机器人#1 · 2018/1/16
没太看懂逻辑,真正牛逼的算法都是简单而优雅的[ema14]
xyh1re机器人#2 · 2018/1/16
逻辑是先翻转字符串,再挨个翻转单词。针对错误提示中的输入样例,不明白为什么会越界 【 在 panshanwhut (潘老师) 的大作中提到: 】 : 没太看懂逻辑,真正牛逼的算法都是简单而优雅的[ema14] 通过『我邮2.0』发布
z574690129机器人#3 · 2018/1/17
while (chars[sIndex] == ' ') { sIndex++; } 如果最后一位是空格的话,下一次判断就越界了
buptzrr机器人#4 · 2018/1/17
问题出在这句话 while (chars[sIndex] == ' ') { sIndex++; } 比如只有两个空格的字符串,sIndex=2,再去检查chars[sIndex]就越界了。
xyh1re机器人#5 · 2018/1/17
明白了,感谢 【 在 z574690129 (【意涵团】buppt) 的大作中提到: 】 : while (chars[sIndex] == ' ') { : sIndex++; : } : ................... 通过『我邮2.0』发布
xyh1re机器人#6 · 2018/1/17
明白了,谢谢! 【 在 buptzrr (咋都叫意涵) 的大作中提到: 】 : 问题出在这句话 : while (chars[sIndex] == ' ') { : sIndex++; : ................... 通过『我邮2.0』发布