计算子串的个数

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'));