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的子字符串, 所以最后要检查一下.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
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; } } |