0
0

文字列Sを回転させて文字列T に一致させる方法

Posted at

atcoder問題文

B - String Rotation /
実行時間制限: 2 sec / メモリ制限: 1024 MB

配点 :
200 点

問題文
英小文字からなる文字列 S, T が与えられます。
S を回転させて T に一致させられるか判定してください。

すなわち、以下の操作を任意の回数繰り返して S を T に一致させられるか判定してください。

制約
2≤∣S∣≤100
∣S∣=∣T∣
S,
T は英小文字からなる
入力
入力は以下の形式で標準入力から与えられる。
S T

出力
S を回転させて T に一致させられる場合は Yes、一致させられない場合は No を出力せよ。

回答

python.py
def strings_rotation(s: str, t: str) -> bool:
    if s == t:
        return True
    
    t2 = t + t
    rotation_find_index = t[1:].find(s[0]) + 1
    if rotation_find_index == -1:
        return False
    
    for i in range(1, len(s)):
        if s[i] != t2[i + rotation_find_index]:
            return False
    
    return True

s = input()
t = input()

if strings_rotation(s, t) or strings_rotation(t, s):
    print("Yes")
else:
    print("No")

回転させて一致するということはすべての回転させる文字の移動距離が同一になることになるのでその性質を利用して説くことができる。t2 = t + tのように文字列を結合しているのは末尾から先頭への移動する文字の比較を楽にするため。

0
0
1

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