题目描述:
有两个字符串s1、s2,判断s1的字串是否第s2的任意排列
第一种方法:切割字符串
算法思想:
将字符串s1切割成和s2一样长的字符串,判断切割后的这个字符串的元素和s2的是否一样,如果每个元素都一样,则判断截断的字符串排序之后和s2是否一样,若一样,即存在s1的字串是s2的其中一个排列
代码实现:
s1 = input()
s2 = input()
len_s1 = len(s1)
len_s2 = len(s2)
print(len_s1)
print(len_s2)
for i in range(0, len_s1-len_s2+1):
j = i
k = i+len_s2-1
p = j
while j<= p <= k:
if s1[p] in s2:
p += 1
else:
break
if p == k+1 and sorted(s1[j:k+1]) == sorted(s2):
print("True")
break
else:
print("False")
第二种方法:递归
算法思想:
递归找出s1字符串的所有子字符串,并将其存放在列表中,判断s2是否in
代码实现: