배열이 너무 많아서 패턴을 검색하려고합니다. 이 패턴에는 "." 각 (각) 1 문자 (모두)와 일치하는 와일드 카드. 예를 들어으로 문자열 검색. 와일드 카드
는 :
myset = {"bar", "foo", "cya", "test"}
find(myset, "f.o") -> returns true (matches with "foo")
find(myset, "foo.") -> returns false
find(myset, ".e.t") -> returns true (matches with "test")
find(myset, "cya") -> returns true (matches with "cya")
나는 myset
실제로 매우 큰 배열 때문에 빨리이 알고리즘을 구현하는 방법을 찾기 위해 노력했지만 내 아이디어 중 어느 것도
O(size_of(myset) * lenght(pattern))
에 대한) 충분한 복잡성이 없습니다
편집 :
myset
은 거대한 배열이므로 단어가 크지 않습니다. 나는 천천히 전처리 할 수있다. 하지만 find()
쿼리가 너무 많으므로 find()
나는 가능한 한 빨리 find()
을 원합니다.
패턴 당 하나의 와일드 카드 이상? –
설정이 고정되어 있습니까? 당신은 그것에서 트 리를 만들고 트라이와 패턴을 일치시킬 수 있습니다. –
어떤 언어입니까? 기존 정규 표현식 라이브러리를 사용할 수 있습니까? –