AtCoder Beginner Contest 322の解説記事です。
目次
ABC322 A – First ABC 2
問題
問題文の要約は以下の通りです。
問題の要約
A, B, C からなる長さ \(N\) の文字列 \(S\) 与えられるので、ABCが連続な部分文字列として初めて現れるのは何文字目か答えよ。
制約
・\(3 \le N \le 100\)
・\(S\) は A, B, C からなる長さ \(N\) の文字列
入力
\(N\)
\(S\)
出力
\(S\) の中で ABC が部分文字列として初めて現れる位置を出力せよ.。ただし、ABC が \(S\) に現れない場合は -1 を出力せよ。
解説
ABCが \(S\) に含まれているかどうかで場合分けを行い、ABCが \(S\) に含まれているときはfind関数で位置を特定します。
解説
まず入力 \(N\) をint型、\(S\) を文字列として受け取ります。
# 入力
N=int(input())
S=input()ABCがSに含まれていないときは-1を出力、ABCがSに含まれているときはABC が初めて現れる位置を出力します。0から始まることに注意すると+1が必要になります。
# ABCがSに含まれていないとき
if 'ABC' not in S:
print(-1)
# ABCがSに含まれているとき
else:
print(S.find('ABC')+1)解答
# 入力
N=int(input())
S=input()
# ABCがSに含まれていないとき
if 'ABC' not in S:
print(-1)
# ABCがSに含まれているとき
else:
print(S.find('ABC')+1)ABC322 B – Prefix and Suffix
問題
解説
\(S\) が \(T\) の接頭辞である判定はT.startswith(S)、\(S\) が \(T\) の接尾辞である判定はT.endswith(S)で行うことができるのでこれを使用します。
解説
まず入力を受け取ります。
# 入力
N,M=map(int,input().split())
S=input()
T=input()接頭辞であり、かつ接尾辞でもある場合は0、
接頭辞であるが、接尾辞でない場合は1、
接尾辞であるが、接頭辞でない場合は2、
接頭辞でも接尾辞でもない場合は3を出力します。
# 接頭辞であり、かつ接尾辞でもある場合
if T.startswith(S) and T.endswith(S):
print(0)
# 接頭辞であるが、接尾辞でない場合
elif T.startswith(S):
print(1)
# 接尾辞であるが、接頭辞でない場合
elif T.endswith(S):
print(2)
# 接頭辞でも接尾辞でもない場合
else:
print(3)解説
# 入力
N,M=map(int,input().split())
S=input()
T=input()
# 接頭辞であり、かつ接尾辞でもある場合
if T.startswith(S) and T.endswith(S):
print(0)
# 接頭辞であるが、接尾辞でない場合
elif T.startswith(S):
print(1)
# 接尾辞であるが、接頭辞でない場合
elif T.endswith(S):
print(2)
# 接頭辞でも接尾辞でもない場合
else:
print(3)
