2012-07-14 2 views
3

어떻게 모바일에서 사용되는 사전을 구현할 수 있습니까? (모바일에 메시지를 입력 할 때 사용됨). 입력 된 문자로 구성 될 수있는 단어 목록을 보여주기 때문에T9 사전을 구현하는 방법은 무엇입니까?

예 :

4663 좋은, 돌아갈 수있는 집.

467 제안 된 단어를 중요하게 표시합니다. 단어를 계산하고 트라이 트리를 노드에 가진 자리를 구축하고 각 리프 노드는 연결리스트/배열에 대한 링크 (또는 다른 데이터 구조를) 할 것이다 -

+0

이 숙제가 있습니까? 그렇다면 그에 따라 태그하십시오. – hytriutucx

답변

3

간단한 솔루션은 사전에하는 것 그 자릿수를 사용하여 형성 할 수있는 문자열

예를 들어, 사용자는 4663 -> null이 아닌 마지막 노드의 모든 하위 노드로 이동하여 다양한 경로를 통해 리프 노드에 도달하여 인쇄합니다 유효한 단어.

주 : 자릿수 = 10이므로 트리 트리의 크기는 제한됩니다. 트리 트리 대신 Ternary Search Tree (TST)를 사용할 수도 있지만 여기에 10 자리 숫자가 있기 때문에 TST를 사용하면 큰 이점이 없을 것입니다.

편집 - 사용 빈도와 같은 경험적 방법을 사용하여 user1168577에서 지적한대로 단어를 순서대로 표시 할 수 있습니다.

+0

그것은 나쁜 해결책입니다. trie는 ** 주어진 접두사로 시작하는 ** 모든 단어를 제공합니다. ** - 수천 명이있을 수 있습니다. 어떻게 최상의 성냥을 선택하고 제안합니까? 나는 이것이 OP가 무엇인지 생각한다. – amit

+4

@amit - 동의하지 않습니다. Trie는 좋은 시작입니다. 접두사를 받으면 해당 접두어로 시작하는 사전 단어가 표시 될 수 있습니다. 몇 가지 휴리스틱 스 즉 사용 빈도에 따라 단어를 표시 할 수 있습니다. – user1168577

+0

@ user1168577 : 예, 언급 한 경험적 방법은이 경우에 좋은 방법입니다. – Rndm

관련 문제