Problem
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:
div[i] = 1if the numeric value ofword[0,...,i]is divisible bym, ordiv[i] = 0otherwise.
Return** the divisibility array of**** **word.
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:
1 <= n <= 105word.length == nwordconsists of digits from0to91 <= m <= 109
Solution (Java)
class Solution {
public int[] divisibilityArray(String word, int m) {
int n = word.length();
int[] div = new int[n];
long remainder = 0;
for (int i = 0; i < n; i++) {
int digit = word.charAt(i) - '0';
remainder = (remainder * 10 + digit) % m;
if (remainder == 0) {
div[i] = 1;
}
}
return div;
}
}
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).