見出し画像

日刊競プロ ABC007 -B - 辞書式順序-

B - 辞書式順序

問題文
文字列 A が与えられる。小文字アルファベット(a-z)のみを使って辞書順比較したとき文字列 A より小さいものを1つ何でも良いので出力せよ。ただし、文字列は 1 文字以上 100 文字以下でなければならない。もし存在しない場合は "-1" を出力せよ。ただし、ある文字列 S=S1​S2​...Sn​と T=T1​T2​...Tm​
について、辞書順比較した際に S<T であるとは、次のどちらか一方の状態が成り立っていることを言う。ある整数 i(1≦i≦min(n,m)) に関して、 1≦j≦i−1 を満たすどの整数 j に関しても Sj​=Tj​が成立し、かつ Si​<Ti​が成立する任意の整数 i(1≦i≦min(n,m)) に関して、 常に Si​=Ti​
が成立し、かつ ∣S∣<∣T∣ である。ただし ∣X∣ は文字列 X の長さを表すものとする。なにやら頭が痛くなる記述だが、言い換えると次の通りである。それぞれの文字列の同じ位置同士を先頭から比較していって、初めて不一致になったら、その文字同士の(アルファベットでの)比較結果が文字列の全体の比較結果である。 例えば、"abcd" と "ax" を比較すると、2 文字目で、′b′<′x′となるので、"abcd"<"ax" である。もし、比較している途中で片方の文字列が尽きてしまったら、文字列の長さが短い方が小さい。例えば "ab"<"abc"である。

考えたこと

aの場合は-1、それ以外の場合は辞書順で小さいものを1つでも出せばよいと考えた。

A = input()
if A=="a":
 print (-1)
else:
 print ("a")

余談だが、求められている文字列が1つ前だった場合はもっと難しい問題になっていたはず・・・

この記事が気に入ったらサポートをしてみませんか?