두 개의 문자열이 있다고 가정합니다. "abcde"및 "dfbag" 결과 문자열은 "ceabdfg"일 수 있습니다. 결과 문자열 "ceadb"의 처음 다섯 문자는 "abcde"의 anargram입니다. 마지막 5 자 "abdfg"는 두 번째 문자열 (dfbag)의 아나 로그이기도합니다.문자열 집합에서 최적의 문자열 (최소 길이)을 찾아서 결과 문자열에 모든 문자열이 포함되어야합니다.
두 문자열의 최적 문자열을 쉽게 찾을 수 있습니다.
두 문자열에있는 모든 공통 문자 집합을 가져옵니다. 위의 예제에서 'a', 'd'및 'b'는 두 문자열 모두에 있습니다. (adb, dba, bda 등)
첫 번째 문자열의 나머지 문자를 가져 와서 앞에 둡니다. 'c'와 'e'는 첫 번째 문자열의 남은 문자입니다. 그래서 그들을 앞에 놓으십시오. 그래서 우리는 "ceabd"를 발견했습니다. 그 첫 번째 문자열의 anargram.
두 번째 문자열의 나머지 문자를 가져 와서 문자열 끝에 넣습니다. 'f'와 'g'는 두 번째 문자열에서 남은 문자입니다. 2에서 찾은 문자열 다음에 넣으면 "ceadbfg"가됩니다. 여기서 "adbfg"는 두 번째 문자열의 아나 그램입니다.
제 질문은 N 개의 문자열이있는 경우 최적의 결과 문자열을 찾는 알고리즘이 될 수 있습니까?
예 :.
우리는 "D"
최적의 문자열이 될 수"DBCA를"4 문자열 "ABC", "카", "BD"를 갖는다. "DBCA"의
부분 문자열 "BCA는", "ABC", "DBCA"의
부분 문자열 "CA"의 anargram하다 "DBCA"의 "캘리포니아"
부분 문자열 "DB"의 anargram은 "DBCA"의 "BD"
하위 문자열 "D"의 anargram 내가이위한 알고리즘을 찾고 있어요 "D"
의 anargram은입니다. (Ofcourse는 모든 조합을 검사하는 무차별 대항력이 아닙니다. :)). 무차별 한 힘없이, 어떤 생각?
문자열에 문자가 두 번 이상 포함될 수 있습니까? 예 : "aba", "ca", "bb", "d"? –
NP- 하드 인 최하위 수염 문제와 유사합니다. 나는이 문제가 NP 하드라고 강력하게 의심하지만, 아직 감소 할 수는 없다. –
예, 문자열에 중복 문자가 포함될 수 있습니다. – rh939