두 개의 소문자 문자열 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