0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

atcoder練習(2024.12.07)

Posted at

問題

キーエンスでは良いことも悪いこともありのままに報告するという文化があります。
そこで、報告内容が元の文章のありのままであるかを確認したいです。
英小文字のみからなる文字列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初めて知った。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?