[leetcode 205] Isomorphic Strings
来源:互联网 发布:sql语句删除列 编辑:程序博客网 时间:2024/05/17 22:07
Question:
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.
分析:
要求两个单词为同构单词,格式相同。
但是要求,不能有不同的字母映射相同的字母的情况。一个字母可以映射自己本身。
若是采用一个hashmap,有可能出现不同字母映射相同字母的情况,因为map.find()函数的参数只能是Key,可以保证Key唯一,但是不能表示实际存储值的唯一性。
所以如果采用两个hashmap,即s->t的映射,t->s的映射都满足即避免了上述情况。
代码如下:
相对于用数组实现map,STL中map要慢一些,因为采用map.find()比较慢。
<span style="font-size:14px;">class Solution {public: bool isIsomorphic(string s, string t) { /*unordered_map<char,char> unordmap1, unordmap2; if(s.length() != t.length()) return false; for(int i = 0; i < s.length(); ++i){ if(unordmap1.find(s[i]) == unordmap1.end()) unordmap1[s[i]] = t[i]; else{ if(t[i] != unordmap1[s[i]]) return false; } if(unordmap2.find(t[i]) == unordmap2.end()) unordmap2[t[i]] = s[i]; else{ if(s[i] != unordmap2[t[i]]) return false; } } return true;*/ if (check(s, t) && check(t,s)) return true; else return false; } bool check(string s, string t) { int dict[256]; fill_n(dict, 256, 0); for (int i=0; i<s.length(); i++) if (dict[s[i]]==0) dict[s[i]]=t[i]; else if (dict[s[i]] != t[i]) return false; return true; }};</span>
0 0
- LeetCode 205 - Isomorphic Strings
- [LeetCode 205]Isomorphic Strings
- LeetCode 205-Isomorphic Strings
- leetcode 205: Isomorphic Strings
- leetcode 205 Isomorphic Strings
- LeetCode 205:Isomorphic Strings
- leetcode-205 Isomorphic Strings
- Isomorphic Strings - LeetCode 205
- Isomorphic Strings leetcode 205
- leetcode 205:Isomorphic Strings
- leetcode-205 Isomorphic Strings
- Isomorphic Strings(leetcode 205)
- leetcode[205]:Isomorphic Strings
- leetcode-205-Isomorphic Strings
- leetcode 205: Isomorphic Strings
- leetcode: (205) Isomorphic Strings
- [LeetCode 205] Isomorphic Strings
- Leetcode----205Isomorphic Strings
- Android 高仿微信群聊头像
- ASP.NET-MVC4-02-MVCVersion
- IOS常用设计模式——观察者模式(IOS开发)
- The new features of OSX 10.11 and Xcode 7
- Set接口
- [leetcode 205] Isomorphic Strings
- 使用bootStrap-validator
- JVM中进程的工作目录
- 类的合理设计
- DFS入门:全排列算法及POJ 1564 Sum it up详解
- 制作initrd(1):向initrd内部更新驱动模块
- 越来越觉得自己啥都不会
- 方法的声明和实现
- Java字符串String中contains与indexOf的区别