Leetcode solution 02:205 Isomorphic Strings
2015-05-23 11:33
239 查看
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.
show tags: hash table
//C++ class Solution { public: bool isIsomorphic(string s, string t) { };
题目的意思就是给你2个string,如果他们都是 ABB 类型 , ABBCDD 类型……,就返回true 否则返回 false
也就是说相同位置的字母要一样
刚开始我想的是替换
比如 paper 和 title
第一遍拿到 p 和 t
然后循环一次 paper 将其中所有的p 替换成t
第二遍拿到 a 和 i
循环 paper 将其中所有的a替换成i
第二个想法是 26个字母,就用 a[26],全部初始化为0
第一个字母就在 a[0]+1, 后面相同字母再+1,不同存入a[1],a[2]
最后比较2个数组
感觉第一个比较好写,就写了第一个
class Solution { public: bool isIsomorphic(string s, string t) { int length = s.length(); char c1, c2; for (int i = 0; i < length; i++) { c1 = s[i]; c2 = t[i]; for (int j = 0; j < length; j++) { if (s[j]==c1) { s[j] = c2; } } } if (s == t) return true; else return false; } };
结果没通过,它上面的测试数据是很长很长的一串各种字符都有的东西
看了下提示,是Hash Table,这才想到之前的第二种想法和hash table 挺像的
而且还想的比 Hash 麻烦,最后用Hash 表的方法写了另外一个方法通过OJ
class Solution { public: bool isIsomorphic(string s, string t) { int a[256] = { 0 }, b[256] = {0}; for (int i = 0; i < s.length(); i++) { if (a[s[i]] > 0 || b[t[i]] > 0) { if (a[s[i]] = b[t[i]]) continue; else return false; } else{ a[s[i]] = i + 1; b[t[i]] = i + 1; } } return true; } };
初始化 2个数组 全部存0
第一次遇到字母,会存入相应的位置,并且存入值为i+1,保证各个下标的值均不同,之后再次遇到相同(也就是 a[s[i]] > 0 || b[t[i]] > 0 )则会比较其位置的值是否相等
相关文章推荐
- [LeetCode] 205 Isomorphic Strings
- leetcode 205: Isomorphic Strings
- leetcode[205]:Isomorphic Strings
- Isomorphic Strings - LeetCode 205
- leetcode 205: Isomorphic Strings
- leetcode 205 Isomorphic Strings C++
- LeetCode205 Isomorphic Strings
- leetcode 205 Isomorphic Strings
- [Leetcode 205, Easy] Isomorphic Strings
- Leetcode205: Isomorphic Strings
- LeetCode 205 Isomorphic Strings(同构的字符串)(string、vector、map)(*)
- [LeetCode-205] Isomorphic Strings(同构字符串)
- Leetcode 205 Isomorphic Strings
- leetcode 205 Isomorphic Strings
- LeetCode 205 Isomorphic Strings
- LeetCode205 Isomorphic Strings同构字符串
- LeetCode(205)Isomorphic Strings
- Leetcode 205 Isomorphic Strings 字符串处理
- LeetCode#205 Isomorphic Strings
- leetcode——205——Isomorphic Strings