2010-12-12 6 views
0

나는 java.lang에 응용 프로그램의 사전 종류를 쓰고있다. 단어 문서에 250 만 단어의 목록을 가지고있다. 내 사전은 모바일 애플리케이션을 기반으로한다. 사용자가 4 글자, 즉 ghi로 시작하는 단어를 얻어야하고, 2를 입력하면 ghi로 시작하는 글자를 받아야하고 두 번째 글자는 abc 중 하나입니다.자바를 사용하여 사전을 작성하기

이제 어떻게해야할까요? 1. 공간 및 시간 복잡성을 기반으로 단어 목록을 저장하기위한 데이터 구조는 무엇이되어야합니까?

2. 나는 15 자리 숫자를 입력하면 모든 자릿수를 입력 한 후에 무차별 체크를 수행하기가 거의 혼란 스럽기 때문에 혼란 스럽습니다.

나를 안내 할 수있는 사람이 있습니까?

답변

2

글쎄, 우선 당신은 (예를 들어 모든 g, hi4 및 교체) 해당 키를 사용하여 각 문자를 교체하여 단어를 정상화. 그런 다음 trie 또는 기타 공백 데이터 구조를 만들어 공칭 표현을 기반으로 단어를 저장합니다. 나머지는 쉽습니다.

0

나는 구조를 만들어서 각 세계를 제시 할 수있는 숫자로 매핑해야한다고 생각한다. 그런 매핑으로부터지도를 빌드하십시오. 따라서 List<Integer> 및 Multiset (Map<Integer, Set<String>>) 및 매핑 기능이 필요합니다.

0

방금 ​​생각한 것처럼 숫자 트리를 만들 수 있습니다. 각 숫자는 당신이 말한대로 3 글자를 나타냅니다. 트리의 각 노드가 나무 같이, 그래서 단어를 '소'를 저장하는 트리에서 하나의 문자를 나타냅니다 : 마지막 노드에서

[1(abc) , 2 , 3 , 4 , 5 , 6 ...] 
    /\ 
    [... 4 , 5 , 6 (mno) , 7 ... ] 
       /\ 
     [... 7 , 8 , 9(wxyz) ] 

, 당신은 단어의 소를 넣어 것입니다 같은 문자 열 ('모든', '활', '상자'등)으로 만들 수있는 다른 단어. 그런 다음 사용자가 '169'를 입력하면 해당 노드에서 발견 된 모든 트리 문자 단어를 표시 한 다음 선택한 노드 아래의 하위 노드에서 발견되는 더 긴 단어를 표시 할 수 있습니다.

관련 문제