Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 메타 문자열(한 문자열을 교환한 후 두 문자열이 같을 수 있는지 확인)

<시간/>

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