Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 철자가 틀린 단어를 수정하기 위해 변경할 총 문자 수를 찾는 프로그램

<시간/>

도시 목록과 서로를 연결하는 도로 목록이 있다고 가정합니다. '도시' 목록에는 투어 버스가 방문하는 도시의 이름이 순서대로 포함됩니다. '도로' 목록에서 도로는 (출발지, 목적지) 순서로 나열되어 출발지에서 목적지까지 일방통행 도로가 있음을 의미합니다. 이제 '도시' 목록의 일부 도시 이름의 철자가 틀리는 문제가 있습니다. 우리는 최소 문자 수를 변경하여 이러한 철자가 잘못된 도시 이름을 수정해야 합니다. 변경된 문자 수를 출력으로 반환합니다.

따라서 입력이 도시 =["HWH", "DLI", "BGL"], 도로 =[["HWH", "DLI"],["DLI", "BCT"], ["BCT"와 같은 경우 , "HWH"]], 출력은 2가 됩니다.

도시에서 철자가 틀린 도시 이름은 'BGL'입니다. 정확한 이름은 'BCT'입니다. 따라서 도시의 이름도 수정해야 합니다. 2자를 변경해야 합니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • diff() 함수를 정의합니다. 이것은, b
    • 와 b 사이의 총 문자 차이를 반환
  • 크기 :=도시의 크기
  • arr :=새 지도
  • 교차로:=도로의 각 소스 도시에서 새로운 세트
  • 접합의 각 j에 대해 다음을 수행합니다.
    • arr[j] :=diff(도시[0], j)
  • 범위 1에서 크기까지의 i에 대해
    • nxt :=새 지도
    • 도로의 각 r1, r2에 대해 다음을 수행합니다.
      • r1이 arr에 있으면
        • 비용:=arr[r1] + diff(도시[i], r2)
        • r2가 nxt에 없거나 비용
        • nxt[r2] :=비용
  • arr :=nxt
  • arr의 모든 값 중 최소값 반환
  • 예시

    이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    def diff(a, b):return sum(x !=y for x, y in zip(a, b))def solve(cities, 도로):size =len(cities) arr =dict() 접합 =교차로에서 j에 대해 set(r[0]):arr[j] =diff(cities[0], j) for i in range(1, size):nxt =dict() for r1, r2 도로에서:r1이 arr이면:비용 =arr[r1] + diff(cities[i], r2) r2가 nxt에 없거나 비용  

    입력

    ["HWH", "DLI", "BGL"], [["HWH", "DLI"],["DLI", "BCT"], ["BCT","HWH"]] 

    출력

    2