[LeetCode] Isomorphic Strings
Posted immjc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] Isomorphic Strings相关的知识,希望对你有一定的参考价值。
Given two strings s and t, determine if they are isomorphic.
Two strings are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.
For example,
Given "egg"
, "add"
, return true.
Given "foo"
, "bar"
, return false.
Given "paper"
, "title"
, return true.
Note:
You may assume both s and t have the same length.
判断两个字符串是否同构。
同构的条件是字符串s和t中对位的字母是否存在某种唯一的映射关系。
所以利用两个map来构建映射关系,ms来构建s->t的映射关系。mt来构建t->s的映射关系。在同一对位字母下,ms与mt的键值正好相反。
判断如果与已经存在的键值不匹配,则返回false即可
class Solution { public: bool isIsomorphic(string s, string t) { unordered_map<char, char> ms; unordered_map<char, char> mt; for (int i = 0; i != s.size(); i++) { if (ms[s[i]] == 0 && mt[t[i]] == 0) { ms[s[i]] = t[i]; mt[t[i]] = s[i]; } else if (ms[s[i]] != t[i] || mt[t[i]] != s[i]) return false; } return true; } }; // 9 ms
以上是关于[LeetCode] Isomorphic Strings的主要内容,如果未能解决你的问题,请参考以下文章
Java [Leetcode 205]Isomorphic Strings
[LeetCode] 205 Isomorphic Strings