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;
}
}