所以问题是: 返回数组中数字的总和,除了忽略以6开头并延伸到下一个7的数字部分(每6个后跟至少一个7)。返回0表示没有数字。 例如:
sum67({1, 2, 2}) → 5
sum67({1, 2, 2, 6, 99, 99, 7}) → 5
sum67({1, 1, 6, 7, 2}) → 4
我的尝试:
public int sum67(int[] nums) {
int sum = 0;
for(int i=0;i<nums.length;i++){
if(nums[i] == 6){
while(nums[i] == 7){
i++;
}
}
else{
sum = sum + nums[i];
}
}
return sum;
}
答案 0 :(得分:1)
我会给你一个提示。以下是不对的:
while(nums[i] == 7){
答案 1 :(得分:1)
此循环永远不会运行,因为n[i]
为6:
while(nums[i] == 7){
i++;
}
应该是
while(nums[i] != 7){
i++;
}
有一种方法可以避免内部循环,并用单个循环解决问题,如下所示:
boolean seenSix = false;
for(int i=0;i<nums.length;i++){
if (!seenSix) {
if(nums[i] != 6) {
sum[i] += n[i];
} else {
seenSix = true;
}
} else {
seenSix = (n[i] != 7);
}
}
答案 2 :(得分:1)
试
while(nums[i] != 7){
i++;
}