🍟题目
🌭分析
这道题其实就是让我们求word[0...i]
这个数字能否被m整数。但是可能这个值超过long的最大值,所以我们不能直接转换成long然后除以m取余判断。
那我们应该怎么计算呢????
我们可以用每个数字和m取余后得到的数字 * 10,然后在和m取余看得到的数字是否为0来判断。
我们以题目的例题1为例子:
🍔代码
class Solution {
public int[] divisibilityArray(String word, int m) {
if(word == null) return null;
int n = word.length();
int[] res = new int[n];
long cur = 0;
for(int i = 0;i < n;i ++) {
char c = word.charAt(i);
cur = (cur * 10 + (c - '0')) % m;
res[i] = (cur == 0) ? 1 : 0;
}
return res;
}
}