[
string
groupby
math
]
Leetcode 1933 Check if String Is Decomposable Into Value-Equal Substrings
Problem statement
https://leetcode.com/problems/check-if-string-is-decomposable-into-value-equal-substrings/
Solution
Let us calcualte lengths of each group of values. If we have length 0, 3, 6, 9, ...
: we can separate them into groups of size 3
. If we have length 1, 4, 7, 10, ...
we need at least 2 groups of length 2
(in fact group of length 1
can not be seprated at all, but we can assume it it 2
, because in the end we just check if it is == 1
. If we have 2, 5, 8, 11, ...
, then we have one group of length 2
. We are happy if we have only one number from the last group and zero from other groups.
Complexity
Time complexity is O(n)
, space compexity is O(n)
as well (space can be reduced to O(1)
)
Code
class Solution:
def isDecomposable(self, s):
lens = [len(list(j)) for i, j in groupby(s)]
d = {0:0, 1:2, 2:1}
return sum(d[i%3] for i in lens) == 1