首页 > 解决方案 > 计算子串的数量

问题描述

我在解决以下编码挑战时遇到了困难:
描述
给定一个表示为字符串数字的正整数。任务是计算形成可被3整除的整数的子字符串的数量。 示例:number = "456"输出应该是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"))

基本上,我需要找到一种“正确”进行内部或第二个循环的方法,或者找到另一种方法......

标签: javascriptloopssubstring

解决方案


蛮力方法是将数字转换为字符串,然后遍历字符串的每个可能的 2-index。把子串变成一个数字并检查它的可分性。

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


推荐阅读