【发布时间】:2017-08-23 12:38:36
【问题描述】:
编辑:发布我的最终解决方案,因为这是一个非常有用的线程,我想为其添加一些确定性。使用下面两个答案的建议,我能够制定一个解决方案。我添加了一个辅助函数,在其中定义了一个字谜。这是我的最终解决方案:
def anagram(s1, s2):
s1 = list(s1)
s2 = list(s2)
s1.sort()
s2.sort()
return s1 == s2
def Question1(t, s):
t_len = len(t)
s_len = len(s)
t_sort = sorted(t)
for start in range(s_len - t_len + 1):
if anagram(s[start: start+t_len], t):
return True
return False
print Question1("app", "paple")
我正在处理一些练习技术面试问题,但我被以下问题困住了:
Find whether an anagram of string t is a substring of s
我已经制定了我的代码的以下两种变体,我认为解决这个问题的方法在于两者之间的交叉。我遇到的问题是第一个代码总是打印False.,无论输入如何。第二种变体在某种程度上起作用。但是,它不能对单个字母进行排序。例如t=jks s=jksd 将打印True! 但是t=kjs s=jksd 将打印False.
def Question1():
# Define strings as raw user input.
t = raw_input("Enter phrase t:")
s = raw_input("Enter phrase s:")
# Use the sorted function to find if t in s
if sorted(t.lower()) in sorted(s.lower()):
print("True!")
else:
print("False.")
Question1()
工作变体:
def Question1():
# Define strings as raw user input.
t = raw_input("Enter phrase t:")
s = raw_input("Enter phrase s:")
# use a loop to find if t is in s.
if t.lower() in s.lower():
print("True!")
else:
print("False.")
Question1()
我相信这两者之间有一个解决方案,但我无法弄清楚如何在这种情况下使用 sorted。
【问题讨论】:
-
您需要获取 t 中的所有字符组合,并对照 s 检查它们。对 s 进行排序是不对的。
标签: python python-2.7 boolean anagram