【发布时间】:2021-04-20 03:40:24
【问题描述】:
问题:完成函数 scramble(str1, str2),如果 str1 字符的一部分可以重新排列以匹配 str2,则返回 true,否则返回 false。
注意事项:
仅使用小写字母 (a-z)。不包含标点符号或数字。 性能需要考虑
MY CODE:
s1 = 'rkqodlw'
s2 = 'world'
def scramble(s1, s2):
unscrambled_word = []
n = 0
x = 0
s1_list = list(s1)
s2_list = list(s2)
s1_letter = s1_list[n]
s2_letter = s2_list[x]
for letters in range(len(s2_list)):
while n > len(s1_list):
if s1_letter == s2_letter:
n = n + 1
x = x + 1
else:
n = n + 1
return 'True' if x == len(s2_list) else 'False'
我正在尝试让我的代码剖析这两个字符串中的每一个。如果第一个字符串的单词与第二个字符串的单词不匹配,则 n 将 +1 并移动到第二个字母。如果匹配,则 n 和 x 都将 + 1。我对代码的想法是,如果 x == 在巨型循环结束之前第二个字符串的长度,那么它将返回 True。否则为假。问题在于循环。循环似乎只遍历两个字符串的前两个字母,然后停止。我是一个相当新的编码器,任何输入都非常感谢!谢谢!
【问题讨论】:
-
您的预期回报是多少?如果 s1 是 s2 的加扰版本,您是否尝试返回
True,可能带有额外的字母?如果是这样,集合似乎是一个优雅的解决方案。 -
我也想到了套装但是套装不起作用。如果第一个字是
moon,第二个字是money,则结果为True,错误。当您尝试查看 word1 是否在 word2 中时 -
您的总体想法似乎是正确的。不过,您的 while 循环有问题,您正在检查
n是否大于列表的长度,并且由于n从 0 开始,因此您的 while 循环将永远不会执行。 -
您需要对这两个词进行排序。然后按位置比较。如果不匹配则失败
-
我什至不确定现在是什么系列,就像我说的我还是个新手。但我的想法是,只要我可以让程序验证第一个字符串中是否有足够的单词与第二个字符串中的单词匹配以创建第二个字符串单词,我就不需要解读这些单词。希望这会有所帮助。
标签: python