标签:tco another i++ ring 算法 add res font har
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.
You may assume both s and t have the same length
.
样例:
Given s = "egg"
, t = "add"
, return true
.
Given s = "foo"
, t = "bar"
, return false
.
Given s = "paper"
, t = "title"
, return true
.
解题思路:
一开始我一直钻到牛角尖里面,一直想着字母一一对应的替换。
最近在看算法,这道题应该算是一道很简单的哈希表。
其实就是要记录每一个字母出现的次数和它对应的位置。
以egg和add为例:
‘g‘和‘d‘出现了两次,就是[1,2,2],[1,2,2]
‘foo‘:[1,2,2];bar:[1,1,1]
然后我又再一次陷入了这个存数组的漩涡里面。。。我试图搞一个数组,按照index把出现次数存进去。。。
后来在网上搜索了一下,其实只要按照string的顺序(位置对应),读出每一个char的出现次数(次数对应)就可以以了。
1 class Solution { 2 public: 3 /* 4 * @param s: a string 5 * @param t: a string 6 * @return: true if the characters in s can be replaced to get t or false 7 */ 8 bool isIsomorphic(string s, string t) { 9 // write your code here 10 map <char, int> word1,word2; //<key:char类型,value:int类型> 11 for(int i = 0; i<s.size(); i++){ 12 word1[s[i]]++; 13 word2[t[i]]++; 14 } 15 for(int i = 0; i< s.size(); i++){ 16 if(word1[s[i]]!=word2[t[i]]){ 17 return false; 18 } 19 } 20 return true; 21 } 22 };
[lintcode]638.Strings Homomorphism
标签:tco another i++ ring 算法 add res font har
原文地址:http://www.cnblogs.com/hopping/p/7724342.html