这个代码发生了什么。在一个字符串中找到的变位词作为子串

2024-05-08 17:00:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现这个问题贴在这里,但无法评论或提出问题,所以我正在创建一个新问题。你知道吗

原来的帖子说:

t = "abd"
s = "abdc"

s通常包含t。但是,在对它们进行排序时,会得到字符串abd和abcd,而in比较失败。排序会妨碍其他字母。你知道吗

取而代之的是,你需要一步一步地通过t大小的块

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?他们为什么在最后加1?你知道吗


Tags: 字符串inforlen排序字母评论sort
1条回答
网友
1楼 · 发布于 2024-05-08 17:00:59

alvits和duvoid已经解释了start的值,我不重复了。你知道吗

我强烈建议您学习一些基本的跟踪调试。插入一些有用的print语句来跟踪执行。例如:

代码:

t = "goal"
s = "catalogue"

t_len = len(t)
s_len = len(s)
t_sort = sorted(t)
print "lengths & sorted", t_len, s_len, t_sort

for start in range(s_len - t_len + 1):
   chunk = s[start:start+t_len]
   print "LOOP start=", start, "\tchunk=", chunk, sorted(chunk)
   if t_sort == sorted(chunk):
      print "success"

输出:

lengths & sorted 4 9 ['a', 'g', 'l', 'o']
LOOP start= 0   chunk= cata ['a', 'a', 'c', 't']
LOOP start= 1   chunk= atal ['a', 'a', 'l', 't']
LOOP start= 2   chunk= talo ['a', 'l', 'o', 't']
LOOP start= 3   chunk= alog ['a', 'g', 'l', 'o']
success
LOOP start= 4   chunk= logu ['g', 'l', 'o', 'u']
LOOP start= 5   chunk= ogue ['e', 'g', 'o', 'u']

这有助于说明循环中发生了什么吗?你知道吗

相关问题 更多 >