Python程序员面试算法宝典---解题总结: 第5章 字符串 5.18 如何判断一个字符串是否由另外一个字符串旋转得到

# -*- coding: utf-8 -*-

'''
Python程序员面试算法宝典---解题总结: 第5章 字符串 5.18 如何判断一个字符串是否由另外一个字符串旋转得到

题目:
给定一个能判断一个单词是否为另一个单词的子字符串的方法,记为isSubstring。
如何判断s2是否能够通过旋转s1得到(只能使用一次isSubstring方法)。
例如: "waterbottle"可以通过字符串"erbottlewat"旋转得到。

分析:
这是leecode的题目。
假设原来的字符串为AB
假设旋转的字符串成为BA,
那么两个旋转的字符串组成BABA
里面必然可以查找到AB,从而解决该问题。

关键:

参考:
Python程序员面试算法宝典
'''

def isSubstring(str1, str2):
    result = str1.find(str2)
    return result != -1

# 判断str2可否由str1旋转得到
def isRotated(str1, str2):
    if not str1 and not str2:
        return True
    elif not str1:
        return False
    elif not str2:
        return False
    tmpStr = "{str2}{str2}".format(
        str2=str2
    )
    result = isSubstring(tmpStr, str1)
    return result


def process():
    str1 = "waterbottle"
    str2 = "erbottlewat"
    result = isRotated(str1, str2)
    print result
    str1 = "waterbottle"
    str2 = "erbottlewate"
    result = isRotated(str1, str2)
    print result


if __name__ == "__main__":
    process()

 

你可能感兴趣的:(Python程序员面试算法宝典)