Find the Divisibility Array of a String

Tags : leetcode, array, math, cpp, medium

You are given a 0-indexed string word of length n consisting of digits, and a positive integer m.

The divisibility array div of word is an integer array of length n such that:

Return the divisibility array of word.

Examples #

Example 1:

Input: word = "998244353", m = 3
Output: [1,1,0,0,0,1,1,0,0]
Explanation: There are only 4 prefixes that are divisible by 3: "9", "99", "998244", and "9982443".

Example 2:

Input: word = "1010", m = 10
Output: [0,1,0,1]
Explanation: There are only 2 prefixes that are divisible by 10: "10", and "1010".

Constraints #

Solutions #


class Solution {
public:
    vector<int> divisibilityArray(string word, int m) {
        long long cur = 0;
        vector<int> res;
        for(char &c: word) {
            cur *= 10;
            cur += (c - '0');
            if(cur % m == 0) {
                res.push_back(1);
            }
            else {
                res.push_back(0);
            }
            cur %= m;
        }
        return res;
    }
};