問題
キーエンスでは良いことも悪いこともありのままに報告するという文化があります。
そこで、報告内容が元の文章のありのままであるかを確認したいです。
英小文字のみからなる文字列S,Tが与えられます。
SとTが等しいならば0を、そうでないならば異なっている文字のうち先頭のものが何文字目かを出力してください。
ただし、S,Tの一方にのみi文字目が存在するときも、i文字目は異なっているとみなすものとします。
より厳密には、SとTが等しくないならば次の条件のうちいずれかをみたす最小の整数iを出力してください。
1≤i≤∣S∣かつ1≤i≤∣T∣かつSi≠Ti∣S∣<i≤∣T∣∣T∣<i≤∣S∣ただし、∣S∣,∣T∣でそれぞれS,Tの長さを、Si,TiでそれぞれS,Tのi文字目を表します。
制約
S,T は英小文字のみからなる長さ 1 以上 100 以下の文字列
入力
入力は以下の形式で標準入力から与えられる。
S
T
出力
S と T が等しいならば 0 を、そうでないならば異なっている文字のうち先頭のものが何文字目かを出力せよ。
入力例 1
abcde
abedc
出力例 1
3
S=abcde, T=abedc です。
S と T は 1,2 文字目は等しく、3 文字目が異なるため、 3 を出力します。
入力例 2
abcde
abcdefg
出力例 2
6
S=abcde, T=abcdefg です。
S と T は 5 文字目まで等しく、T にのみ 6 文字目が存在するため、6 を出力します。
入力例 3
keyence
keyence
出力例 3
0
S と T は等しいため、 0 を出力します。
回答
s = list(input())
t = list(input())
if len(s) != len(t):
if len(s) > len(t):
k = len(s) - len(t)
for i in range(k):
t.append('0')
else:
k = len(t) - len(s)
for i in range(k):
s.append('0')
if s == t:
print(0)
else:
for i in range(len(s)):
if s[i] != t[i]:
print(i+1)
break
参考
備考
- もっと綺麗にできる気がめちゃんこする。まず第一listにする必要は確実にない気がする。
- s,tのどちらが長いのかを調べて、その長さに合わせている部分がめちゃくちゃに無駄なような気がする。
- 他の人のコードを見る限り、長さが合わない場合は、tryの例外処理で対応している人が多い。try初めて知った。