중화사전망 - 서예자전 - 파이썬 단어의 최소 편집 거리
파이썬 단어의 최소 편집 거리
먼저 문자가 나타나는 순서를 유지하기 위해 문자를 찾은 다음 소스 단어에서 다른 문자를 제거하고 대상 단어에 추가 문자를 삽입합니다.
알고리즘은 개인적인 추론입니다. 100% 는 정확함을 증명하지 않습니다. 참고로 (python3):
Def? Get_copy_del_chars(src, des):
시작? =? 0
결과? =? []
뭐 때문에? 샤일? 네? Src:
Pos? =? Des [시작:]. 찾기 (문자)
만약? Pos? & gt=? 0:
Result.append ('c',? Char)) 을 참조하십시오
시작? =? 시작? +? Pos? +? 1
그렇지 않은 경우:
Result.append ('d',? Char)) 을 참조하십시오
반환? 결과
Def? Word2word(src, des):
Copy_del_chars? =? Get_copy_del_chars(src, des)
결과? =? []
Idx? =? 0
뭐 때문에? 행동,? 샤일? 네? Copy_del_chars:
만약? 행동? = =? D':
Result.append ((동작, char))
계속하다
만약? Des[idx]? = =? 문자:
Result.append ((동작, char))
Idx? +=? 1
계속하다
언제? 진실:
Result.append ('I',? Des[idx]))
Idx? +=? 1
만약? Des[idx]? = =? 문자:
Result.append ((동작, char))
Idx? +=? 1
파열
반환? 결과
Def? Calc_score (작업):
점수 _ 지도? =? {'나':? 20,? C ':5,? D ':20}
반환? Sum(score_map[op[0]]? 뭐 때문에? Op? 네? 작업) 을 참조하십시오
만약? __name__? = =? __main__':
조작? =? Word2word ('알고리즘',? 악어')
인쇄 (calc_score(operates))