LeetCode in Kotlin

1915. Number of Wonderful Substrings

Medium

A wonderful string is a string where at most one letter appears an odd number of times.

Given a string word that consists of the first ten lowercase English letters ('a' through 'j'), return the number of wonderful non-empty substrings in word. If the same substring appears multiple times in word, then count each occurrence separately.

A substring is a contiguous sequence of characters in a string.

Example 1:

Input: word = “aba”

Output: 4

Explanation: The four wonderful substrings are underlined below:

Example 2:

Input: word = “aabb”

Output: 9

Explanation: The nine wonderful substrings are underlined below:

Example 3:

Input: word = “he”

Output: 2

Explanation: The two wonderful substrings are underlined below:

Constraints:

Solution

class Solution {
    fun wonderfulSubstrings(word: String): Long {
        val count = IntArray(1024)
        var res: Long = 0
        var cur = 0
        count[0] = 1
        for (i in 0 until word.length) {
            cur = cur xor (1 shl word[i].code - 'a'.code)
            res += count[cur].toLong()
            for (j in 0..9) {
                res += count[cur xor (1 shl j)].toLong()
            }
            ++count[cur]
        }
        return res
    }
}