205. 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是否是同构的?如果是同构的话,说明s可以通过保持相对顺序的字母替换/映射得到t。
解答:
如果s可以通过一定的字母映射得到t,那么s和t可以通过一个中间替换得到一个相同的字符串。所以可以以此为出发点,将s和t都通过同样的转换规则得到新的字符串,通过判断s和t的新字符串是否相等,来判断s和t是否是同构的。
在本题里面,我通过将字符串中的字母替换成它出现的顺序数的方法来将原先的字符串变成新的字符串。比如:abcacc=123133。通过这样的转换,如果s和t是同构的话,它们将得到相同的新字符串。
代码:[cpp] view plain
复杂度:
时间复杂度集中在将字符串进行转化的步骤中,因为对于每一个字母都要寻找它出现的顺序数,所以时间复杂度是O(n^2)。