Check if String Is Decomposable Into Value-Equal Substrings

给一个string, 问能不能分解成n个substring, 这些substring由一个长度为2和n个长度为3的连续相同字母组成.

看着很复杂, 其实就是计数一下, 然后每次有新的char的时候, 看mod 3以后是不是能整除. 如果mod后是0, 那么就忽略, mod后是2, 就看是不是唯一的2. 因为必须有1个长度为2的子字符串, 所以最后要检查一下.

class Solution {
    public boolean isDecomposable(String s) {
        if(s.length() < 2)
            return false;
        s = s+"1";
        int[] m = new int[11];
        boolean two = true;
        for(int i = 0; i < s.length(); i++) 
        {
            if(i > 0 && s.charAt(i) != s.charAt(i - 1))
            {
                if(m[s.charAt(i - 1) - '0'] % 3 == 0)
                {
                    m[s.charAt(i - 1) - '0'] = 0;
                }
                else if(m[s.charAt(i - 1) - '0'] % 3 == 2)
                {
                    if(!two)
                        return false;
                    m[s.charAt(i - 1) - '0'] = 0;
                    two = false;
                }
                else
                {
                    return false;
                }
            }
            if(i < s.length())
                m[s.charAt(i) - '0'] ++;
        }
        if(two)
            return false;
        else
            return true;
    }
}