SQLite 데이터베이스를 사용하고 있습니다. 주어진 글자 세트 만 포함하는 단어를 가져올 수 있습니까?글자가 포함 된 필터링 된 단어 목록보기
예컨대 문자가있는 경우 : h, o, e, p, g, m
을 그리고 결과는 가정,시 등 .. 포함될 수 있습니다
2^(문자 수)를 통해SQLite 데이터베이스를 사용하고 있습니다. 주어진 글자 세트 만 포함하는 단어를 가져올 수 있습니까?글자가 포함 된 필터링 된 단어 목록보기
예컨대 문자가있는 경우 : h, o, e, p, g, m
을 그리고 결과는 가정,시 등 .. 포함될 수 있습니다
2^(문자 수)를 통해은 다음과 같다 조건에 문자의 목록을 변환 :
select Word
from words
where
length(
replace(
replace(
replace(
replace(
replace(Word
,'h','')
,'o','')
,'e','')
,'p','')
,'m','')
) = 0
-- In the expressions below replace 1 with the number of copies
-- of each letter than you have
and length(Word)-length(replace(Word,'h','')) <= 1
and length(Word)-length(replace(Word,'o','')) <= 1
and length(Word)-length(replace(Word,'e','')) <= 1
and length(Word)-length(replace(Word,'p','')) <= 1
and length(Word)-length(replace(Word,'m','')) <= 1
아이디어는 단어의 목록에 각 문자를 제거하고 결과가 비어되고 있는지, 어떤 것을 확인하지 않는 것입니다 편지는 허용 된 것보다 더 많이 사용됩니다. 이렇게하면 원하는 결과가 생성됩니다 (demo). 다음, 각 문자에 대한 replace(
를 인쇄 Word
를 인쇄 한 다음 목록에서 각 문자에 대해 x
을 대체 ,'x','')
인쇄 :
쿼리의 첫 번째 부분은 "재귀"문자열을 출력하는 간단한 루프에 의해 생성 될 수있다.
쿼리의 두 번째 부분은 가지고있는 각각의 고유 한 문자를 통해 "문자 인벤토리"의 해당 개수에 해당하는 식을 만들어서 생성됩니다. 예를 들어 'o'
두 개가있는 경우
and length(Word)-length(replace(Word,'o','')) <= 2
위대한 ....이 잘 작동하고 있습니다 ... 고마워 많이 제발 .. – Raj
여전히 하나의 문제 : tblWord에서 단어를 선택하십시오. 길이 (바꾸기 (대체 (대체) '),' ',' '),'m ',' '),'e ','e ',' , ')) = 0 게임, 이름, 달걀, 게이지, 갱 등 ... 하지만'g '가'달걀 '한 번 뿐인 경우'게이지 '와'갱 '은 거기에 ... – Raj
@Raj 표현은 방금 길어 지지만 생각은 본질적으로 동일합니다. 나는 데모도 업데이트했다. – dasblinkenlight
첫 번째 루프 같은 경우 좀 더 어려울 수 있습니다 (각 문자를 활성화/비활성화 문자 사용).
위의 루프 내부에서 모든 문자 조합을 통해 순열 알고리즘을 반복합니다.
단어 하나 이상을 포함해야합니다. –
글자는 모든 글자를 포함해야합니다. – Raj