Skip to content
目录

2575. 找出字符串的可整除数组

难度:中等

地址:https://leetcode.cn/problems/find-the-divisibility-array-of-a-string/

给你一个下标从 0 开始的字符串 word,长度为 n,由从 09 的数字组成。另给你一个正整数 m

word可整除数组 div 是一个长度为 n 的整数数组,并满足:

如果 word[0,...,i] 所表示的 数值 能被 m 整除,div[i] = 1 否则,div[i] = 0 返回 word 的可整除数组。

示例 1:

:word = "998244353", m = 3

:[1,1,0,0,0,1,1,0,0]

:仅有 4 个前缀可以被 3 整除:"9"、"99"、"998244" 和 "9982443" 。

示例 2:

:word = "1010", m = 10

:[0,1,0,1]

:仅有 2 个前缀可以被 10 整除:"10" 和 "1010" 。

提示:

  • 1 <= n <= 10^5
  • word.length == n
  • word 由数字 09 组成
  • 1 <= m <= 10^9

题解:

方法一:模运算

alt text

js
/**
 * @param {string} word
 * @param {number} m
 * @return {number[]}
 */
var divisibilityArray = function (word, m) {
    const res = [];
    let val = 0;
    for (const w of word) {
        val = (val * 10 + (w.charCodeAt(0) - '0'.charCodeAt(0))) % m;
        res.push(val === 0 ? 1 : 0);
    }
    return res;
};