2575. 找出字符串的可整除数组
难度:中等
地址:https://leetcode.cn/problems/find-the-divisibility-array-of-a-string/
给你一个下标从 0 开始的字符串 word
,长度为 n
,由从 0
到 9
的数字组成。另给你一个正整数 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
由数字0
到9
组成1 <= m <= 10^9
题解:
方法一:模运算
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;
};