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])