问题:
给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位(rotate)得到的字符串包含。例如给定s1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false.
1.解决方案一:
保留求解:
def isExist(src,des):
src = list(src)
len1 = len(src)
len2 = len(list(des))
for i in range(0,len1):
tempchar = src[0]
for j in range(0,len1-1):
src[j] = src[j+1]
src[len1-1] = tempchar
print(src,'src');
print(''.join(src[0:len2]),'src');
if ''.join(src[0:len2]) == des:
return True
return False
2.解决for循环嵌套问题:
理论依据:
1. 通过空间换时间
2.对s1循环过程研究,循环过程字符串都是s1s1的子串,因此可以减少一次for循环,代码如下:
def isExist(src,des):
src = list(src * 2) #
len1 = len(src)
len2 = len(list(des))
for i in range(len1-len2+1):
print(''.join(src[i:i+len2]),'src');
if ''.join(src[i:i+len2]) == des:
return True
return False