2013-03-13 7 views
0

내 질문은 거기에 몇 게시물과 비슷하지만 다른 측면을 가지고 있다고 생각합니다. 훨씬 더 큰 배열 내에서 하위 배열이나 패턴을 찾으려고합니다. 수천 개의 행이있는 배열을 사용하여 작업 할 것이므로 배열 내에서 패턴을 찾아야합니다. 검색 할 값은 배열의 값과 비슷합니다. 예를 들어, 10,000 행의 배열은 1의 0의 L과 H로 주로 채워질 것이고, 예를 들어 1 0 1 1을 찾고있는 특정 패턴을 찾을 것입니다. H.배열 내부의 하위 배열 찾기 및 해당 위치 반환

다른 게시물에 게시 된 솔루션은 훨씬 더 작은 규모의 배열을 다루고 있으며 하위 배열은 소스 배열과 더 구분됩니다. 또한 소스 배열 내에서 배열을 찾았 으면 해당 하위 배열의 위치를 ​​반환해야합니다. (C#에서이 코드를 수행하려고합니다.)

+2

하위 배열 길이가 어떻게 다릅니 까? – Inisheer

+1

문제는 [This Post] (http://stackoverflow.com/questions/1780423/find-the-first-occurrence-starting-index-of-the-sub-array-in-c-sharp)와 어떻게 다른가요? –

+1

하위 문자열 검색에 Knuth-Morris-Pratt 알고리즘을 사용할 수 있습니다. http://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm –

답변

0

이것은 기본적으로 부분 문자열 검색과 동일합니다. 그들은 모두 무작위 접근 큰 시퀀스 내부에서 서브 시퀀스를 찾는 것에 관한 것입니다. 그리고 당신의 설명에서, 여러분의 배열은 문자 배열과 똑같은 것으로 들립니다. 문자열은 정확히 문자열입니다.

메모에 설명하는 알고리즘은 올바르게 작성하고 작성하는 것이 쉽습니다. 속도가 충분히 빠르지 않다면 KMP를 살펴보십시오.