题目:
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,判断两个字符串是否是同构字符串。没有两个元素对应同一个元素,但是可以对应其本身。
所谓同构字符串就是说有相同的结构,比如asfsa和12321,。可以看作是一种映射关系,在这组字符串中,a对应的1,s对应的2,f对应的3,如果满足这一映射关系,并一直向后一直保持这种关系则可以说他们有相同的结构。
思路:
建立字符字典,将不存在字典对应的元素保存进字符字典,对后面的元素进行对比,如果字典映射不相等,则返回false;
代码:8ms
class Solution { public: bool isIsomorphic(string s, string t) { int map1[256] = {0}; int map2[256] = {0}; int n = s.size(); for(int i=0; i<n; i++){ if(map1[s[i]] != map2[t[i]]){ return false; } map1[s[i]] = i + 1; map2[t[i]] = i + 1; } return true; } };