如果它打破了确定的顺序,则进行计数器停止
Make a counter stop if it breaks a determined sequence
关于我的问题的简要总结:我正在尝试将一个序列变成一个“条件”序列——输入是一个仅由 true 和 false 组成的数组,我认为这会比如果它由数字序列组成。这个想法是让它计算一个“true”的序列,并在下一个输入为“false”并且returns更大的计数时中断。
// If the input is something like [true, true, ... true, true]
// should return count => input.length
// My issue is to make it break when it have a interruption i. e.
// [true, true, true, false, true, true, false]
// should return => the bigger sequence; with my code it returns 5
function sol(sequence) {
let count = 0;
for (let i = 0; i < sequence.length; i++) {
if (sequence[i] == true) {
if (sequence[i] == sequence[i+1]){
count++;
}
}
}
// I tried to add a break; but isn't worked like i wanted
// for (let i = 0; i < sequence.length; i++) {
// if (sequence[i] == true) {
// if (sequence[i] == sequence[i+1]){
// count++;
// }
// if (sequence[i] != sequence[i+1]) {
// break;
// }
// }
// }
// I need the counter has bigger (or equals) than 7 otherwise it return a "fail"
if (count >= 7) {
console.log(count)
} else {
console.log('failed')
}
}
在 post 上进行一些解释后,这是一个功能结果:
function sol(sequence) {
// Move the "+1" to low then when have no "true" will return 0.
let count = 0;
let largestSequence = 0;
for (let i = 0; i < sequence.length; i++) {
if (sequence[i] == true) {
if (sequence[i] == sequence[i + 1]) {
count++;
}
} else {
if (largestSequence < count) {
largestSequence = count + 1;
count = 0;
}
}
}
return Math.max(largestSequence, count);
}
这是我所有奇怪示例的最终答案。谢谢Gulam
let sequenceContinued = false;
let count = 0;
let sequences = [];
for (let i = 0; i < array.length; i++) {
const item = array[i];
if (item === false && sequenceContinued === true) {
sequenceContinued = false;
sequences.push(count);
count = 0;
continue;
}
if (item === true) {
sequenceContinued = true;
count++;
}
if (i === array.length - 1 && item === true) {
sequences.push(count);
}
}
const longestCount = sequences.length ? Math.max(...sequences) : 0;
const array = [
true,
false,
false,
false,
true,
true,
false,
true,
true,
true,
false,
true,
true,
true,
true
];
let sequenceContinued = false;
let count = 0;
let sequences = [];
for (let i = 0; i < array.length; i++) {
const item = array[i];
if (item === false && sequenceContinued === true) {
sequenceContinued = false;
sequences.push(count);
count = 0;
continue;
}
if (item === true) {
sequenceContinued = true;
count++;
}
if (i === array.length - 1 && item === true) {
sequences.push(count);
}
}
const longestCount = sequences.length ? Math.max(...sequences) : 0;
console.log(longestCount);
function sol(sequence) {
let count = 1;
let largestSequence = 0;
for (let i = 0; i < sequence.length; i++) {
if (sequence[i] == true) {
if (sequence[i] == sequence[i + 1]) {
count++;
}
} else {
if (largestSequence < count) {
largestSequence = count;
count = 1;
}
}
}
return Math.max(largestSequence, count);
}
var arr = [true, false, true, true, true, true, true];
var solution = sol(arr);
console.log(solution);
您可以创建一个单独的变量'largestSequence',每次遇到假值时,它都会将count的值存储在largestSequence中。
最后返回largestSequence和count这两个变量中的最大值,因为最大的true序列可能不会被false终止,比如[true, false, true, true, true, true,正确].
关于我的问题的简要总结:我正在尝试将一个序列变成一个“条件”序列——输入是一个仅由 true 和 false 组成的数组,我认为这会比如果它由数字序列组成。这个想法是让它计算一个“true”的序列,并在下一个输入为“false”并且returns更大的计数时中断。
// If the input is something like [true, true, ... true, true]
// should return count => input.length
// My issue is to make it break when it have a interruption i. e.
// [true, true, true, false, true, true, false]
// should return => the bigger sequence; with my code it returns 5
function sol(sequence) {
let count = 0;
for (let i = 0; i < sequence.length; i++) {
if (sequence[i] == true) {
if (sequence[i] == sequence[i+1]){
count++;
}
}
}
// I tried to add a break; but isn't worked like i wanted
// for (let i = 0; i < sequence.length; i++) {
// if (sequence[i] == true) {
// if (sequence[i] == sequence[i+1]){
// count++;
// }
// if (sequence[i] != sequence[i+1]) {
// break;
// }
// }
// }
// I need the counter has bigger (or equals) than 7 otherwise it return a "fail"
if (count >= 7) {
console.log(count)
} else {
console.log('failed')
}
}
在 post 上进行一些解释后,这是一个功能结果:
function sol(sequence) {
// Move the "+1" to low then when have no "true" will return 0.
let count = 0;
let largestSequence = 0;
for (let i = 0; i < sequence.length; i++) {
if (sequence[i] == true) {
if (sequence[i] == sequence[i + 1]) {
count++;
}
} else {
if (largestSequence < count) {
largestSequence = count + 1;
count = 0;
}
}
}
return Math.max(largestSequence, count);
}
这是我所有奇怪示例的最终答案。谢谢Gulam
let sequenceContinued = false;
let count = 0;
let sequences = [];
for (let i = 0; i < array.length; i++) {
const item = array[i];
if (item === false && sequenceContinued === true) {
sequenceContinued = false;
sequences.push(count);
count = 0;
continue;
}
if (item === true) {
sequenceContinued = true;
count++;
}
if (i === array.length - 1 && item === true) {
sequences.push(count);
}
}
const longestCount = sequences.length ? Math.max(...sequences) : 0;
const array = [
true,
false,
false,
false,
true,
true,
false,
true,
true,
true,
false,
true,
true,
true,
true
];
let sequenceContinued = false;
let count = 0;
let sequences = [];
for (let i = 0; i < array.length; i++) {
const item = array[i];
if (item === false && sequenceContinued === true) {
sequenceContinued = false;
sequences.push(count);
count = 0;
continue;
}
if (item === true) {
sequenceContinued = true;
count++;
}
if (i === array.length - 1 && item === true) {
sequences.push(count);
}
}
const longestCount = sequences.length ? Math.max(...sequences) : 0;
console.log(longestCount);
function sol(sequence) {
let count = 1;
let largestSequence = 0;
for (let i = 0; i < sequence.length; i++) {
if (sequence[i] == true) {
if (sequence[i] == sequence[i + 1]) {
count++;
}
} else {
if (largestSequence < count) {
largestSequence = count;
count = 1;
}
}
}
return Math.max(largestSequence, count);
}
var arr = [true, false, true, true, true, true, true];
var solution = sol(arr);
console.log(solution);
您可以创建一个单独的变量'largestSequence',每次遇到假值时,它都会将count的值存储在largestSequence中。
最后返回largestSequence和count这两个变量中的最大值,因为最大的true序列可能不会被false终止,比如[true, false, true, true, true, true,正确].