我发现此问题发布在此处,但无法评论或提出问题,所以我创建了一个新问题。这段代码发生了什么。字符串作为字符串中的子字符串
原来的职位说明如下:
t = "abd"
s = "abdc"
小号平凡包含吨。然而,当你对它们进行排序时,你会得到字符串abd和abcd,并且比较失败。排序会得到其他字母。
相反,您需要以大小为t的块来逐步完成s。
t_len = len(t)
s_len = len(s)
t_sort = sorted(t)
for start in range(s_len - t_len + 1):
chunk = s[start:start+t_len]
if t_sort == sorted(chunk):
# SUCCESS!!
在for循环中,他们为什么要用S-len然后减去t_len?为什么他们最后加1?
因为's_len - t_len + 1'子字符串中最多只能有't_len'。总而言之,在一个4字符的字符串中,每个字符串最多可以有2个子字符串。也就是说,前3个字符和后3个字符,“abd”和“bdc”。 – alvits
这实际上是创建一个窗口的大小(len(t)),然后你滑过len(s)。即检查s中长度为len(t)的所有连续子串。在这个例子中,长度为3的2个子字符串。 –
谢谢你帮助澄清事情。 – john