問題1.8
これもまぁ解けたけど、面接とかでいきなり解けって言われたら思いつかないかも。
いやー、思った以上に脳が腐ってきてる。笑。
問題
片方の文字列が、もう片方の文字列の一部分になっているかどうかを調べるメソッド「isSubstring」が使えると仮定します。2つの文字列s1とs2が与えられたとき、isSubstringメソッドを一度だけ使ってs2がs1を回転させたものかどうかを判定するコードを書いてください(たとえば、「waterbottle」は「erbottlewat」を回転させたものになっています)。
#encoding: utf-8 def is_rotated_strs(str1, str2): ''' str2がstr1を回転させた文字列かどうかをチェックする関数 >>> is_rotated_strs('waterbottle', 'erbottlewat') True >>> is_rotated_strs('waterbottle', 'erbottlewta') False ''' # str1を2つ連結。str2を含めば、str1を回転させた文字列。 if is_substring(str1 + str1, str2) is True: return True else: return False def is_substring(str1, str2): ''' str2がstr1の一部分であるかどうかをチェックする関数 >>> is_substring('helloworld', 'hello') True >>> is_substring('helloworld', 'helo') False >>> is_substring('helloworld', 'olleh') True ''' # str2がstr1の一部分かをチェック for counter in range(0, len(str1) - len(str2)): if str1[counter:counter + len(str2)] == str2: return True elif str1[counter:counter + len(str2)] == str2[::-1]: return True return False def _test(): import doctest doctest.testmod() if __name__ == '__main__': _test()