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

C++에서 문자열을 다른 문자열로 만들기 위해 문자를 바꿀 수 있는지 확인하는 프로그램

<시간/>

두 개의 소문자 문자열 s와 t가 있다고 가정합니다. 이제 s에 있는 모든 문자를 다른 문자로 바꾸는 작업을 고려하십시오. 이 작업을 여러 번 수행할 수 있다면 s가 t로 변환될 수 있는지 여부를 확인해야 합니다.

따라서 입력이 s ="eye" t ="pip"와 같으면 출력은 True가 됩니다. "e"를 "p"로, "y"를 "i"로 바꿀 수 있기 때문입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 하나의 맵 m1 및 다른 맵 m2 정의

  • n :=s

    의 크기
  • initialize i :=0의 경우, i

    • s[i]가 m1에 있으면 -

      • m1[s[i]]가 t[i]와 같으면 -

        • 다음 반복으로 이동

      • 거짓을 반환

    • 그렇지 않으면

      • m1[s[i]] :=t[i]

  • true를 반환

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
bool solve(string s, string t) {
   map m1, m2;
   int n = s.size();
   for(int i = 0; i <n; i++){
      if(m1.count(s[i])){
         if(m1[s[i]] == t[i]) continue;
            return false;
      }
      else{
         m1[s[i]] = t[i];
      }
   }
   return true;
}
int main(){
   string s = "eye", t = "pip";
   cout << solve(s, t);
}

입력

"eye","pip"

출력

1