2013-11-25 1 views
0

따라서 원본 데이터는 정렬 된 사전 단어 목록과 임의의 정렬되지 않은 문자열 목록입니다.두 단어의 조합을 포함하는 문자열을 추출하는 단어 목록 교차

사전 작업 목록에서 두 단어의 조합 인 단어 만 임의의 문자열로 목록에서 추출하는 작업입니다.

사전 목록 :

ace 
dice 
nice 
task 
test 
try 

랜덤 목록 :

test123task 
testtask 
bbtesttask 
bbtest1task 
nicetry 
nicetesttry 
nice1task 
1nicetry 

결과 :

testtask 
nicetry 

이를 수행하고 큰 목록을 처리 할 수있는 스크립트를 건너 있나요? 나는 내가 스스로 이것을 프로그램 할 수 있을지는 분명하지 않다. 한 번 목록을 처리하고 키워드로 시작하는 단어 목록을 추출하는 알고리즘을 생각 중입니다. 첫 번째 문자열이 끝나는 문자에 대한 인덱스 번호를 추가해야합니다.

그런 다음 색인은 index + 1부터 끝까지 처리됩니다.

준비된 솔루션 또는 시작 위치에 대한 지침은 언제든지 환영합니다. PHP와 MySQL에 대한 경험이 제한되어 있습니다. 사전 목록에서 (이진 검색과)

test123task 

검색 t :

가 랜덤 목록에서 단어를 가지고 :

+0

세부 사항에 충분한주의를 기울이지 않아서 ... 사전에 추가했습니다. 감사. – EliasP

답변

1

여기 시작합니다. 단어 t에 의해 시작하면, 당신은 사전에 실제 단어 인 test으로 숙박 할 수 있도록 test1가 발견되지 않는 발견했을 경우에는 검색 teste을 검색하고 그래서 역 추적 1하여 단어 1, 아무것도 시작을 검색 할 수 있습니다. 그러나 tes, tet은 단어가 아닙니다. test123task이 올바르지 않습니다.

또 다른 예 :

testtask 

검색 t, te, tes, test, testt. 백 트랙 : test. test은 정확한 단어입니다. 여기에서 계속하십시오. 검색 t, ta, tas, task. task은 정확한 단어입니다. 성공을 되 돌리십시오.

데이터를 입력하는 것은별로 흥미롭지 않습니다. 어떤 경우에는 짧은 단어로 끝내야 할 수도 있기 때문입니다. 사전에 tes을 추가하십시오.

`testask` 

검색 t, te, tes, test, testa : 그리고이 단어를 테스트합니다. 백 트랙 : test. test은 정확한 단어입니다. 여기에서 계속하십시오. 검색 a, as. 백 트랙 : a. a은 정확한 단어가 아닙니다. tes으로 역 추적하십시오.tes은 정확한 단어입니다. 여기에서 계속하십시오. 검색 t, ta, tas, task. task가 사전에 있습니다. 반환 성공.

이 세 가지 예에서 모든 가능성을 테스트하기 위해 역 추적을 사용하는 재귀 알고리즘을 작성할 수 있어야합니다.