Problem Statement
Bindu has N friends, sitting around a round table. She wants to give each friend one of the cupcakes. Moreover, she does not want to give cupcakes of the same color to any pair of friends who sit next to each other.
Let X be the number of ways in which she can hand out the cupcakes to her friends. As X can be very large, compute and return the value (X modulo 1,000,000,007).
Definition
- Class:
- ColorfulCupcakesDivTwo
- Method:
- countArrangements
- Parameters:
- String
- Returns:
- int
- Method signature:
- int countArrangements(String cupcakes)
- (be sure your method is public)
Notes
- Formally, Bindu's friends can be labeled 0 through N-1 in such a way that friends i and (i+1 modulo N) are adjacent, for each i.
Constraints
- cupcakes will contain between 3 and 50 characters, inclusive.
- Each character in cupcakes will be either 'A', 'B', or 'C'.
Examples
"ABAB"
Returns: 2
The two valid ways of handing out the cupcakes are "ABAB" and "BABA". (I.e., in the first way, friends 0 and 2 will receive cupcake of color A; and friends 1 and 3 will receive cupcake of color B. The second way is exactly opposite.)
"ABABA"
Returns: 0
Regardless of how she hands out the cupcakes, there will always be a pair of adjacent friends who both received a cupcake of color A. Hence, there are no valid arrangements of cupcakes.
"ABC"
Returns: 6
Each of the six permutations of "ABC" corresponds to a valid arrangement.
"ABABABABABABABABABABABABABABABABABABABABABABABABAB"
Returns: 2
"BCBABBACBABABCCCCCAABBAACBBBBCBCAAA"
Returns: 741380640
"ABCCCACCCBCCC"
Returns: 0
"ABBBBAABAAACCBABAAACACCACABCABBAABCCCBAABCCBABA"
Returns: 188207837
"CAAABBAAB"
Returns: 0
"ACCACABACABABACBBCCCBAACABABA"
Returns: 10664808
"AABCACACAAABBBBBAABAACABCBAACABA"
Returns: 16016
"ABCABCABCC"
Returns: 180
"BBBBCACAAABABCB"
Returns: 450
"AACBAACBBCBBCBCACBCCCA"
Returns: 174020
"CBCAACCCACBCCBBBBABACCCACBBAAC"
Returns: 8011080
"BAACBABBABCC"
Returns: 408
"CCABABBBBBBAAAABCBCACBBCAAABBAAACBCACBBACABACACBB"
Returns: 323466116
"CBBCBCCBCACCBCBBAACCBCAACAACBACCBBCBAB"
Returns: 19722697
"CAACCAABBBABAACBBCBBBBAA"
Returns: 185184
"BCAACAAABACCBBABABBBACCCCBBBCCABAACABCACAABCAC"
Returns: 198638319
"ABABCBCCABBCABACCABCBCCBCBAC"
Returns: 6825840
"AABCBABCCBABACAAACCBCCABCABAABB"
Returns: 85228176
"BCBABAAACBAABAACACAACBCCCBCCCBC"
Returns: 55045584
"BAACBABBABBCCCBCCCACBCCABBAAAAACBACCBBBB"
Returns: 680898127
"AACCCAACBABBCBABCACAACCBCCABBC"
Returns: 27054720
"CCAABBACBBBBACBCCAABBABCBBBBBCCAAABBCBCCBABBAABAAB"
Returns: 838553334
"BCBABCCCCBABCACACAACABCBAABCBCACCAABAABCCBCCCCCCCA"
Returns: 838553334
"BACCCAABCCCABBAACCACCCABBACCACACAACCACBCBAABCCCCBA"
Returns: 534612302
"BABCAAAACACBAABACCACBACCCBBBBCBCBCCCACCAACCCAACACA"
Returns: 451311121
"CBACBCBCBCAAACAABBAAABACAABABBBBACACCACBACCABBCACC"
Returns: 969866300
"BABCAAACBCAABBACAACABAABBACAACAABACCBCBCCBABABABBA"
Returns: 359261006
"CABBCABCCCCCCAACABABBCACABABABCACABCCABBABBACCACBA"
Returns: 807732686
"ACACCBACCBBACBBAAABCCCBBAABABCBBACBCBCABABBAACBABA"
Returns: 829127786
"BAACBAAACBABBBCCAABBCAABAACCCAAAABAAAAACCBBBCAABCA"
Returns: 612092993
"CBAAABBCBBACCABCBBCABCCAAACCBBCBCACABBAAAAACBBBAAB"
Returns: 823779011
"ABCABAABCCCCBACBACABCABAAACBCCBCBAABABCBBCAAABCBAA"
Returns: 969866300
"AABCBCAABCBCACABACBBBAABBBABCBBACAABCBCBCABCBABCCA"
Returns: 618020015
"ABBBACCBACCCACAABCBBBBCBBBBABBABCCACCABAACAABBBABB"
Returns: 439564296
"CACCCBBACCCABCACBAABABAAABBBCAACBBCBCBBCABACAACCAA"
Returns: 807732686
"ABBACBACBCABACCCACACCBAAABACACCCBCCBACABABBAAAAABB"
Returns: 618020015
"CAAAAABCBACBCABCCCCABACCBAABBCACCAAABCAAACACABBCBB"
Returns: 991666600
"AABACCBABACBCCCAABABBAACAABCACBBCABABAACAACBABCBCC"
Returns: 395853981
"CCAACBAAABBCCBABBBBABABBBBAAAAACABAACBBCCCCCBABCBA"
Returns: 270820324
"CABACACAAAABCCCACBBABBAAACABCCCABBBABCBCCBAABAAACC"
Returns: 618020015
"CBAABBCAABCACACBBBAAACCCCACACCABAABCBBCCAACABACBBC"
Returns: 823779011
"ABCBCABBCABBACBABBCABAAABCCCABCCACBCABBCCCBAABC"
Returns: 423411909
"CBABBACBABABCCCCCAABBAACBBBBCBC"
Returns: 24862992
"AAAAAAAAAAAAAAABBBBBBBBBBBBBBBCCCCCCCCCCCCCCC"
Returns: 730747455
"AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBACCCCCCCCCCCCCCCCB"
Returns: 139077442
"ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCCC"
Returns: 726665879
"AAAAAAAAAAAAAAABBBBBBBBBBBBBBBCCCCCCCCCCCCCCCABCAB"
Returns: 139077442
"ABCA"
Returns: 4
"ABCCCAAABBBCCCAAABBBCBCBACBACACACACBCACBCBAC"
Returns: 280387198
"BCBABBACBABABCCCCCAABBAACBBBBCBCAAABBC"
Returns: 886239205
"AAAAAAAAAAAAAAABBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCC"
Returns: 395853981
"AABABABABABABCCCBBCBABCBACBACBBCBCCBCCCBACABCBCBC"
Returns: 521301082
"AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCC"
Returns: 853062226
"ACBACBABBCABCBABABACACABCBACBACBABCAC"
Returns: 746183318