LeetCode in Kotlin

2575. Find the Divisibility Array of a String

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.

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:

Solution

class Solution {
    fun divisibilityArray(word: String, m: Int): IntArray {
        val ans = IntArray(word.length)
        val prevRemainder = StringBuilder()

        for (i in word.indices) {
            val number = prevRemainder.append(word[i]).toString().toLong()
            if (number != 0L && number < m) {
                continue
            }

            val remainder = number % m
            prevRemainder.clear()

            if (remainder == 0L) {
                ans[i] = 1
            } else {
                prevRemainder.append(remainder)
            }
        }

        return ans
    }
}