1
특정 알고리즘을 구현해야합니다. 기본적으로 규칙은 다음과 같습니다.파이썬에서 알고리즘 구현
- 줄의 첫 번째 공백으로 구분 된 토큰은 정의되는 단어입니다.
- 나중에 토큰이 정의됩니다. 정의가 "."인 경우, 그 단어는 프리미티브, 즉 정의가없는 단어이다.
- 출력은 딕셔너리의 각 단어가 정확히 한 번만 포함 된 쉼표로 구분 된 한 줄의 텍스트입니다. 각 단어는 정의에있는 모든 단어 뒤에 인쇄됩니다. 특정 입력 세트의 경우 유효한 출력이 여러 개있을 수 있습니다.
예를 들어 입력 :
Civic Honda Car
Honda Manufacturer
VW Manufacturer
Manufacturer .
Car .
Beetle VW Car
일부 가능한 출력 :
Car, Manufactor, Honda, VW, Beetle, Civic
Manufacturer, VW, Car, Beetle, Honda, Civic
Manufacturer, Honda, VW, Car, Beetle, Civic
내 구현 :
def defIt(pre, cur):
# If previous and current strings are the same, no action take
if pre == cur:
return pre
# Split two strings to list
l_pre = pre.split()
l_cur = cur.split()
# If previous string length is shorter than the current string length, then swap two lists
if len(l_pre) < len(l_cur):
l_pre, l_cur = l_cur, l_pre
found = False
for j, w_cur in enumerate(l_cur):
for i, w_pre in enumerate(l_pre):
if w_pre == w_cur:
found = True
return ' '.join(l_cur[j:] + l_cur[:j] + l_pre[:i] + l_pre[(i + 1):])
if not found:
return ' '.join(l_cur[1:] + [l_cur[0]] + l_pre)
이 바로 그것을 얻을 수 없습니다. 나는 무엇을 놓치고 있습니까? 고마워.
대단히 감사합니다. 나는 그래프가 좋지 않고 그래프를 사용하기 전에 생각하지도 않았습니다. – user1044566
이 답변이 귀하의 필요를 충족 시킨다면 점수 옆에있는 체크 표시를 클릭하십시오. – wberry