CODE FESTIVAL 2017 Final: B - Palindrome-phobia
文字種が$4$になるとどうなるのだろう (考えてない)
solution
文字の数を数えた後は$O(1)$。
始めに文字aを使うすると、その後ろにはaは置けない。さらにbを置いてabとすると、この後ろにはc以外を置くことはできない。abcとなれば同様に必ずaを置かなければならない。これを繰り返せば、目標の文字列が構成されるならabcabc...abcabとならねばならない。
よって、入力はそれぞれの文字の数$a, b, c \in \mathbb{N}$が与えられるとしてよく、$\max \{ a, b, c \} \le \min \{ a, b, c \} + 1$が答え。
implementation
#!/usr/bin/env python3
s = input()
a = s.count('a')
b = s.count('b')
c = s.count('c')
result = (max(a, b, c) <= min(a, b, c) + 1)
print(['NO', 'YES'][result])