# 567. 字符串的排列
# 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。
# 换句话说,第一个字符串的排列之一是第二个字符串的子串。
# 示例1:
# 输入: s1 = "ab" s2 = "eidbaooo"
# 输出: True
# 解释: s2 包含 s1 的排列之一 ("ba").
# 示例2:
# 输入: s1= "ab" s2 = "eidboaoo"
# 输出: False
# 注意:
# 输入的字符串只包含小写字母
# 两个字符串的长度都在 [1, 10,000] 之间
class Solution:
def checkInclusion(self, s1, s2):
cp = []
for c in s1:
cp.append(c)
tp = cp[:]
l,r = 0,-1
length = len(s2)
while r < length:
r += 1
right = r
l = r
while right < length:
if len(tp) == 0:
return True
c = s2[right]
if c in tp:
tp.pop(tp.index(c))
right += 1
elif c in s1:
s = s2[l]
tp.append(s)
l += 1
else:
r = right
tp = cp[:]
break
r = right
if len(tp) == 0:
return True
return False
s = Solution()
print(s.checkInclusion("abc","aaccaacb"))
一键复制
编辑
Web IDE
原始数据
按行查看
历史