ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

ABC043 D - アンバランス / Unbalanced

問題
提出コード

解法

アンバランスな文字列tには、ある文字xが過半数以上存在しなければなりません。
これにより、tのうち少なくとも2つに1つ(以上)は文字xが存在しています。
なので、文字列tには、どこかに

  • "xx"

  • "x〇x"

の2種類の並びのうちどちらかが存在していないといけません。これが存在していなかった場合、必ず文字列tに含まれる文字xは半数以下になっています。そして、この2種類の並びは、それ自体もアンバランスな文字列になっていますので、結局この2種類について考えてしまえばいいことになります。
ので、文字列sの部分文字列で、アンバランスなものを探すとき、上の2種類の並びが存在するかどうか調べればよいことになります。
あとは、26種類ある英語小文字全てに対して、上のような文字列を探せば、存在した時点で1つ出力するだけで答えになります。
全ての文字に対して探しても見つからなかった場合は、-1 -1を出力すればいいです。