[Leetcode] Isomorphic Strings
来源:互联网 发布:ios10怎么清除游戏数据 编辑:程序博客网 时间:2024/05/17 02:15
描述
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.
分析1
判断两个字符串是否是同构字符串,即判断两个字符串的字符是否是一一对应的关系。
因此,我们需要用两个哈希表,将每个字符串的字符与其位置信息对应起来,并通过位置信息将两个哈希表联系起来。
对于两个字符串的同一位置的两个字符:
1. 如果都没出现在哈希表中:分别添加进哈希表,将位置作为哈希表的值;
2. 只有一个出现在哈希表中:必然不同构;
3. 都出现在哈希表中:比较两个哈希表中它们的值是否相同。
代码1
class Solution {public: bool isIsomorphic(string s, string t) { unordered_map<char,int> m1,m2; for (int i = 0; i < s.size(); i++) { bool in_m1 = m1.find(s[i]) != m1.end(); bool in_m2 = m2.find(t[i]) != m2.end(); if ((in_m1 && !in_m2) || (!in_m1 && in_m2)) return false; if (in_m1 && in_m2 && m1[s[i]] != m2[t[i]]) return false; if (!in_m1 && !in_m2) {m1[s[i]] = i + 1; m2[t[i]] = i + 1;} } return true; }};
分析2
当然也可以用数组简化代码。
代码2
class Solution {public: bool isIsomorphic(string s, string t) { int m1[256] = {0}, m2[256] = {0}, n = s.size(); for (int i = 0; i < n; i++){ if (m1[s[i]] != m2[t[i]]) return false; m1[s[i]] = i + 1; m2[t[i]] = i + 1; } return true; }};
0 0
- 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
- leetcode--Isomorphic Strings
- iOS开发之 WKWebVeiw使用
- Python Debug
- 欧拉计划 8
- 使用Eclipse的maven构建一个web项目
- hdu题目分类
- [Leetcode] Isomorphic Strings
- UX入門 - 2
- 练习
- C语言指针
- Java虚拟机学习入门
- 数据结构 邻接链表 DFS
- 创建单实例守护进程
- 使用Socket通信实现FTP客户端程序【很详细】
- 快排