이 섹션에서는 두 문자열이 메타 문자열인지 여부를 확인하는 방법을 알아봅니다. 메타 문자열은 매우 유사한 문자열입니다. 한 문자열에서 두 요소를 바꾸면 다른 문자열과 일치합니다. 두 개의 문자열이 "HELLO"와 "OELLH"라고 가정하면 메타 문자열입니다.
두 문자열이 메타 문자열인지 확인하려면 다음 단계를 따라야 합니다.
단계 -
-
두 문자열의 길이가 다르면 false를 반환합니다.
-
그렇지 않으면 일치하지 않는 여러 문자를 찾고 일치하지 않는 문자의 인덱스도 저장합니다.
-
개수가 2보다 크면 false를 반환합니다.
-
그렇지 않으면 이 문자를 교환하고 두 문자열이 같으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
예시
#include <iostream>
using namespace std;
bool areTheyMetaString(string s1, string s2) {
int s1_len = s1.length();
int s2_len = s2.length();
if (s1_len != s2_len)
return false;
int prev = -1, curr = -1;
int count = 0;
for (int i=0; i<s1_len; i++) {
if (s1[i] != s2[i]) {
count++; // number of unmatched characters
if (count > 2)
return false;
prev = curr;
curr = i;
}
}
return (count == 2 && s1[prev] == s2[curr] && s1[curr] == s2[prev]);
}
int main() {
string s1 = "HELLO", s2 = "OELLH";
if(areTheyMetaString(s1, s2)){
cout << "Meta Strings";
} else {
cout << "Not Meta Strings";
}
} 출력
Meta Strings