이 섹션에서는 두 문자열이 메타 문자열인지 여부를 확인하는 방법을 알아봅니다. 메타 문자열은 매우 유사한 문자열입니다. 한 문자열에서 두 요소를 바꾸면 다른 문자열과 일치합니다. 두 개의 문자열이 "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