计算子串的个数
Count the number of substrings
我在解决以下编码挑战时遇到困难:
描述:
给定一个正整数表示为字符串数字。
任务是 计算 其子串的数量,这些子串构成整数 可被 整除 3。
示例:
number = "456" output 应该是 3
因为:
4 不能 被 3
整除
5 不能 被 3
整除
6是能被3
整除
45是能被3
整除
56 不能 被 3
整除
456是能被3
整除
这是我的实现:
function threeDivisibleSubsequences(number) {
let count = 0
for (i of number) {
if (i % 3 == 0) {
count += 1
}
}
return count
}
console.log(threeDivisibleSubsequences("456"))
基本上,我需要找到一种方法来“正确”执行内部或第二个循环,或者可能找到另一种方法...
一种蛮力方法是将数字转换为字符串,然后遍历字符串的每个可能的 2 索引。将子串转为数字并检查其可整除性。
const threeDivisibleSubsequences = (input) => {
let count = 0;
for (let i = 0; i < input.length; i++) {
for (let j = i; j < input.length; j++) {
if (Number(input.slice(i, j + 1)) % 3 === 0) {
count++;
}
}
}
return count;
};
console.log(threeDivisibleSubsequences('456'));
我在解决以下编码挑战时遇到困难:
描述:
给定一个正整数表示为字符串数字。
任务是 计算 其子串的数量,这些子串构成整数 可被 整除 3。
示例:
number = "456" output 应该是 3
因为:
4 不能 被 3
整除
5 不能 被 3
整除
6是能被3
整除
45是能被3
整除
56 不能 被 3
整除
456是能被3
这是我的实现:
function threeDivisibleSubsequences(number) {
let count = 0
for (i of number) {
if (i % 3 == 0) {
count += 1
}
}
return count
}
console.log(threeDivisibleSubsequences("456"))
基本上,我需要找到一种方法来“正确”执行内部或第二个循环,或者可能找到另一种方法...
一种蛮力方法是将数字转换为字符串,然后遍历字符串的每个可能的 2 索引。将子串转为数字并检查其可整除性。
const threeDivisibleSubsequences = (input) => {
let count = 0;
for (let i = 0; i < input.length; i++) {
for (let j = i; j < input.length; j++) {
if (Number(input.slice(i, j + 1)) % 3 === 0) {
count++;
}
}
}
return count;
};
console.log(threeDivisibleSubsequences('456'));