205. Isomorphic Strings 字符串相似


Given two stringssandt, determine if they are isomorphic.

Two strings are isomorphic if the characters inscan be replaced to gett.

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 bothsandthave the same length.

题目大意:

判断两个字符串是否相似。

思路:

使用双map来进行比较。map键为字符串元素,值为字符上一次出现的位置。

代码如下:

classSolution{public:boolisIsomorphic(strings,stringt){if(s.size()!=t.size())returnfalse;unordered_map<char,int>maps;unordered_map<char,int>mapt;for(inti=0;i<s.size();i++){if(maps.find(s[i])==maps.end()&&mapt.find(t[i])==mapt.end()){maps.insert(pair<char,int>(s[i],i));mapt.insert(pair<char,int>(t[i],i));}elseif(maps.find(s[i])!=maps.end()&&mapt.find(t[i])!=mapt.end()){if(maps[s[i]]!=mapt[t[i]])returnfalse;else{maps[s[i]]=i;mapt[t[i]]=i;}}elsereturnfalse;}returntrue;}};

2016-08-13 17:15:21