LeetCode (35) Isomorphic Strings
来源:互联网 发布:java编程思想第四版 编辑:程序博客网 时间:2024/05/26 08:41
题目描述
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.
- Given “ab”, “aa”, return false. ⇒ a->a and b->a
Note: You may assume both s and t have the same length.
本题比较简单,不必考虑两个字符串长度不同的情况。遍历字符串,使用map得到两个字符串中字符的映射,若新出现的字符对与map中保存的不同,则返回false。
需要注意,使用一个map对于 “ab”, “aa” 的情况可能无法判断,因为从a->a 和 b->a的key是不一样的,在map中无法查找到,而反过来则是 a->a 和 a->b显然是错误的,因此,我们可以对两个字符串分别作为map的key,进行两次判断,避免错误的发生。
另一种做法是,仅使用一个字符串作为map的key,但是使用一个set保存每个key的value。若处理完成后,set中元素个数小于map元素个数,则说明存在两个不同的key映射到了同一个value情况,返回false.
代码
class Solution {public: bool isIsomorphic(string s, string t) { if(s.size() != t.size()) return false; unordered_map<char, char> stringMap; for(size_t i = 0; i != s.size(); ++i) { char sc = s[i]; char tc = t[i]; if (stringMap.find(sc) == stringMap.end()) { stringMap[sc] = tc; } else { if (stringMap[sc] != tc) return false; } } unordered_set<char> stringSet; unordered_map<char, char>::iterator it = stringMap.begin(); for(; it != stringMap.end(); ++it) { if (stringSet.find(it->second) != stringSet.end()) return false; else stringSet.insert(it->second); } return true; }};
- LeetCode (35) Isomorphic Strings
- LeetCode 205 - Isomorphic Strings
- [LeetCode] Isomorphic Strings
- Isomorphic Strings Leetcode JAVA
- [LeetCode] Isomorphic Strings
- [LeetCode 205]Isomorphic Strings
- LeetCode 205-Isomorphic Strings
- leetcode Isomorphic Strings
- leetcode(c++) Isomorphic Strings
- leetcode--Isomorphic Strings
- [LeetCode]Isomorphic Strings
- LeetCode OJ Isomorphic Strings
- leetcode 205: Isomorphic Strings
- leetcode 205 Isomorphic Strings
- [leetcode] Isomorphic Strings
- 【leetcode】Isomorphic Strings
- [leetcode]Isomorphic Strings
- [LeetCode]Isomorphic Strings
- 第八周项目四:String类的构造
- 大型网站的 HTTPS 实践(三)——基于协议和配置的优化
- 黑马程序员——Java基础——字节流文件操作、键盘录入、转换流、流操作规律、异常日志等
- 一组SM2测试数据
- 马周游问题
- LeetCode (35) Isomorphic Strings
- 大型网站的 HTTPS 实践(四)——协议层以外的实践
- Asp.net中GridView使用详解
- mdx中nonempty 和 non empty的区别
- 微信公众平台-接收发送被动响应消息-PHP示例
- Fidder 进行web调试
- Android开源项目第三篇——优秀项目篇
- AngularJS快速开始(二)--与jQuery比较来认识AngularJS
- soap学习