java에서 백만 단어 목록에있는 하위 문자열 수를 얻으려고합니다. 이전 값에 다음 값이 포함되어 있는지 확인하기 위해 각 문자열을 루핑하여 성능에 큰 문제가있는 것 같습니다. 적은 수의 단어로도 잘 작동하지만 백만 단어의 거대한 목록이 포함될 때 카운트를 되 찾는 데는 시간이 걸립니다. 누군가가 나에게 이것에 대한 가장 빠른 접근법을 말할 수 있습니까?백만 단어 목록에서 부분 문자열 수 얻기
1
A
답변
0
2N 시간에 얻을 수 있다고 생각합니다.
- 루프를 모두 나열하고 문자열을 하나에 연결하거나 줄 단위로 파일 또는 sth에 넣습니다. 모든 단어를 포함하는 ONE_BIG 문자열을 얻을 수 있습니다. string이 크면 file을 사용하고 unix를 통해 regexp를 실행하십시오.
- 루프는 모든 단어를 던지고 ONE_BIG에서 단어와 함께 regexp를 사용하고 계산합니다.
이것은 간단합니다. 하지만 어쩌면 누군가가 나아질 수 있습니다. 나는 호기심으로 기다리고있다.
0
순진한 해결책은 Set
에 모든 하위 문자열을 삽입 한 다음 해당 세트의 크기를 확인하는 것입니다.
너무 느리거나 너무 많은 메모리를 소비하는 경우 맞춤형 데이터 유형 (예 : 균형 잡힌 문자 트리)이 더 빠를 수 있습니다.
약 1 억 개의 하위 문자열이있는 트리가 32 비트 jvm에 저장할 수 있습니다.
보다 큰 데이터 세트의 경우 해시 체질 알고리즘이 메모리 솔루션에 대해 조금 더 나아갈 수 있습니다.
괜찮은 데이터베이스 또는 데이터 저장소를 사용하여 하위 문자열을 인덱싱하고 저장할 수 있습니다. 당신이 유닉스 또는 리눅스를 사용하는 경우
은, 모든 문자열을 생성하는 프로그램을 작성하기 위해 충분하다, 사실 .. 또한
몇 개의 파일과 전혀 거의 메모리를 사용하는 모든 문자열을 정렬 할 수 있습니다 external sort algorithms 있습니다 sort -q
및 wc
을 통해 파이프하면 아마 더 빨리 그리고 거의 코딩 할 필요없이 대답을 얻을 수 있습니다. 하지만 그것이 내가 생각한 실험실을 통과하지 못하게 할 것입니다.
관련 문제
- 1. Python : 목록에서 문자열 내의 부분 문자열 찾기, 부분 문자열 저장
- 2. 문자열 목록에서 부분 문자열 제거
- 3. 문자열 목록에서 부분 문자열 찾기
- 4. QtreeView 목록에서 문자열 얻기
- 5. 포인터의 부분 문자열 얻기
- 6. 문자열 목록에서 단어 발생을 계산하십시오.
- 7. 문자열 목록에서 부분 문자열 찾기, 반환 색인
- 8. 솔라리스에서 부분 문자열 색인 얻기
- 9. 부분 문자열 이미지 이름 얻기
- 10. IP 주소 부분 문자열 얻기
- 11. URL jquery에서 부분 문자열 얻기
- 12. 큰 문자열 + PHP 부분 얻기
- 13. 문자열에서 일치하는 부분 문자열 얻기
- 14. awk를 사용하여 부분 문자열 얻기
- 15. 단어 목록에서 텍스트 "x"의 인스턴스 수 얻기
- 16. MySQL 데이터베이스 검색 문자열 - 부분 단어
- 17. 자바 : 목록에서 중심 단어 주위의 문자열 정렬
- 18. 두 부분 문자열 사이에 단어 바꾸기 (다른 단어 유지)
- 19. Java - 목록에서 문자열 찾기 최적화
- 20. 문자열 목록에서 같은 부분 문자열을 찾는 알고리즘
- 21. 두 단어 사이의 모든 문자열 얻기
- 22. 문자열에서 반복되는 부분 문자열 패턴 얻기
- 23. Fitnesse에서! today 변수의 부분 문자열 얻기
- 24. Trie를 사용하여 단어 목록에서 복합 단어 찾기
- 25. 비교, 라벨에서 문자열 얻기
- 26. tinymce 사용시 단어 수 얻기
- 27. RedCloth에서 텍스트 단어 수 얻기
- 28. 단어 목록에서 사용자가 선택한 단어 제거
- 29. xslt1.0을 사용하여 특정 부분 문자열 얻기
- 30. Java 및 Android : 문자열에서 부분 문자열 얻기
찾고있는 것을 보여줄 수 있습니까? 성능 문제를 나타내는 코드도 함께 제시하십시오. – Behe
'이전 값에 다음 값이 들어있는 경우 '예제를 제공하십시오 –
이 부분 문자열이 입력에 주어 졌는가 또는 아마도 문자열의 공통 부분을, 아마도 세트에서 찾은 것 같습니까? – Cromax