日刊競プロ ABC007 -B - 辞書式順序-
問題文
文字列 A が与えられる。小文字アルファベット(a-z)のみを使って辞書順比較したとき文字列 A より小さいものを1つ何でも良いので出力せよ。ただし、文字列は 1 文字以上 100 文字以下でなければならない。もし存在しない場合は "-1" を出力せよ。ただし、ある文字列 S=S1S2...Snと T=T1T2...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つ前だった場合はもっと難しい問題になっていたはず・・・