문자가 여러 변형을 가질 수있는 문자열의 가능한 모든 버전을 찾는 방법에 대한 팁을 찾고 있습니다.문자에 여러 변형이있을 수있는 문자열의 가능한 모든 버전 찾기
간단한 예 : "Macao"는 시작 문자열입니다. 문자 'a'에는 변형 'ä'이 있고 문자 'o'에는 변형 'ö'이 있습니다.
목표는 위의 정보에서 다음 목록을 확보하는 것입니다
Macao
Mäcao
Macäo
Mäcäo
Macaö
Mäcaö
Macäö
Mäcäö
내 접근 방식은 지금까지 일을 단순화하는 변종 문자를 확인하고 추출 할 수있다. 아이디어는 전체 단어가 아닌 각 문자에 대해 작업하는 것입니다.
aao
äao
aäo
ääo
aaö
äaö
aäö
ääö
다음 코드는 우리가 작업하고있는 변형을 찾습니다.
다음 단계는 각각의 문자에 대해 가능한 모든 조합을 찾는 것입니다. 이를 위해 다음과 같은 기능을 썼습니다. results
에 각 문자열의 첫 문자 중 새로운 문자열을 만듭니다.
std::string read_results(std::vector<std::string> &results)
{
std::string s;
for (auto &c : results) {
s.push_back(c.front());
}
return s;
}
아이디어는 모든 가능한 조합을 얻을하는 방식으로 results
에 저장된 문자열을 변경하는 것입니다, 나는 붙어 곳이다. 그게 도움이 될 것 같아 std::rotate
것 같습니다.
그래서 순열을 찾고 있습니까? –
텍스트 비교를 돕기 위해이 작업을 수행하는 경우 개별 문자를 하나씩 서로 바꾸는 것이 항상 충분하지 않다는 점에 유의하십시오. 예를 들어, 독일어에서는 ö가 'oe'로 대체 될 가능성이 큽니다. – Kylotan