C++程序:检查能否替换字符将一个字符串转换为另一个字符串
假设我们有两个小写字符串s和t。现在考虑一个操作,我们将s中所有出现的某个字符替换为另一个字符。如果我们可以执行此操作任意多次,我们必须检查s是否可以转换为t。
因此,如果输入类似于s = "eye" t = "pip",则输出将为True,因为我们可以将“e”替换为“p”,然后将“y”替换为“i”。
为了解决这个问题,我们将遵循以下步骤:
定义一个映射m1和另一个映射m2
n := s的长度
for i := 0 to n-1 do −
如果s[i]在m1中,则:
如果m1[s[i]]与t[i]相同,则:
进入下一个迭代
返回false
否则
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
广告