ABC374 B問題の解説(Python)

はじめに

この記事では、ABC374のB問題を解説していきます。

ABC(AtCoder Beginner Contest)とは、AtCoderが開催している、競技プログラミングコンテストです。

ABC374 B – Unvarnished Report

問題

問題

英小文字のみからなる文字列 S, T が与えられます。S と T が等しいならば 0 を、そうでないならば異なっている文字のうち先頭のものが何文字目かを出力する問題です。

ただし、S, T の一方にのみ i 文字目が存在するときも、i 文字目は異なっているとみなすものとします。

制約

  • \(1 \leqq len(S), len(T) \leqq 100 \)

思考の筋道

SとTが同じ文字かを一文字目から順番に確認していきましょう。

SとTが同じ文字数のときはそれだけでOKですが、異なる文字数のときはちょっと工夫しなければなりません。対処法を2つ紹介します。

<方法1>
SとTをそれぞれ100文字の文字列として考えます。後ろの足りない部分をスペースで埋めて100文字にします。あとはスペースも含めて、SとTが同じ文字列かを比較すればOKです。この方法であれば、SとTの文字数が違っても問題ありませんね。なお、100という数字は、制約の最大文字数の100から来ています。

<方法2>
SとTの文字数をはじめに調べ、文字数が異なる場合は、その少ない方までを一文字ずつ調べます。そこまでがすべて一致していた場合、次の文字が必ず等しくないので、その値を出力すればOKです。

入力例2

S=”abcde”, T=”abcdefg” のとき
Sは5文字、Tは7文字。少ない方の5文字目までは一文字ずつSとTが一致しているかどうかを調べます。今回は一致していますね。Sには次の6文字目がないので、答えに6を出力すればOKです。

下のコードは<方針1>のコードです。

コード

S = input()
T = input()

S = S + " " * (100 - len(S))
T = T + " " * (100 - len(T))

for i in range(100):
  if S[i] != T[i]:
    print(i + 1)
    exit()

print(0)

以上、ABC374のB問題の解説でした!

では、またね。

リンク