社交网站开发项目计划报告,做平台网站怎么做的,外贸手机商城网站建设 深圳,半年工作总结题目
给定两个字符串 s 和 t #xff0c;判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t #xff0c;那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符#xff0c;同时不改变字符的顺序。不同字符不能映射到同一个字符上#xf…题目
给定两个字符串 s 和 t 判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t 那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符同时不改变字符的顺序。不同字符不能映射到同一个字符上相同字符只能映射到同一个字符上字符可以映射到自己本身。 示例 1:
输入s egg, t add
输出true示例 2
输入s foo, t bar
输出false
示例 3
输入s paper, t title
输出true
C代码
#include iostream
#include string
#include unordered_map
using namespace std;/*
* 同构字符串的判断
* 使用两个无序哈希表保存映射关系
* 如果有映射关系但是值不同返回false
*/
bool isIsomorphic(string s, string t) {if (s.size() ! t.size()) {return false;}int len s.size();unordered_mapchar, char s2t;unordered_mapchar, char t2s;for (int i 0; i len; i) {char x s[i], y t[i];if ((s2t.count(x) s2t[x] ! y) || (t2s.count(y) t2s[y] ! x)) {return false;}s2t[x] y;t2s[y] x;}return true;
}int main() {string s egg;string t add;bool ans isIsomorphic(s, t);cout boolalpha ans endl;return 0;
}
分析
同构字符串的判断使用两个无序哈希表保存映射关系如果有映射关系但是值不同返回 false否则返回 true。