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