EDIT : 이것이 매우 유용한 스레드 였기 때문에 최종 해결책을 게시하고 일부 최종 결과를 추가하려고합니다. 아래 두 대답의 조언을 사용하여 솔루션을 만들 수있었습니다. 내가 아나그램을 정의한 헬퍼 함수를 추가했습니다. 여기 내 최종 솔루션입니다 :Python 2.7 한 문자열의 일부 anagram이 다른 문자열의 부분 문자열인지 찾는 경우
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.
을 인쇄한다는 것입니다. 두 번째 변형은 어느 정도 작동합니다. 그러나 개별 문자를 정렬 할 수는 없습니다. 나는이 두 가지 사이에 놓여있는 솔루션이 생각하지만, 내가 어떻게 알아내는 데 문제가
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()
: 인쇄됩니다 예를 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()
근무 변형을 인쇄합니다 이 상황에서는 sorted
을 사용하십시오.
문자의 조합을 모두 가져 와서 s와 비교해야합니다. s를 정렬하는 것이 옳지 않습니다. – Shiping