【发布时间】:2022-06-10 18:09:00
【问题描述】:
鉴于CodingBat的任务sameEnds:
如果数组开头和结尾的
N数字组相同,则返回true。例如,对于{5, 6, 45, 99, 13, 5, 6},n=0和n=2的结尾相同,n=1和n=3的结尾为 false。您可以假设n在0..nums.length范围内。sameEnds([5, 6, 45, 99, 13, 5, 6], 1) → false sameEnds([5, 6, 45, 99, 13, 5, 6], 2) → true sameEnds([5, 6, 45, 99, 13, 5, 6], 3) → false
我对这个问题的解决方案通过了绝大多数测试,但不是全部:
public boolean sameEnds(int[] nums, int len) {
if (nums.length >= len * 2) {
for (int i = 0, j = nums.length - 1 ; i < len && len > 0; i++, j--) {
if (nums[i] != nums[j]) {
return false;
}
}
}
return true;
}
我的问题如下:
- 可以做些什么来修复我的解决方案?
- 是否可以使用 Stream API 解决此任务?
【问题讨论】:
-
哪些测试用例失败了?
-
规范不禁止
len大于nums.length / 2。起点和终点可以重叠。
标签: java arrays for-loop if-statement java-stream