LeetCode探索之旅(59)-205同构字符串
2019-03-21 19:23
134 查看
今天继续刷LeetCode,第205题,求两个字符串是否是同构的。
分析:
判断两个字符串是否同构,需要找到两个字符串中字符之间的对应关系,这时需要用到hashmap,通过建立两个字符串之间的映射关系,那么就可以判断是否是同构的了。建立两个hashmap,遍历其中一个字符串的每一位,如果不在映射关系中,就添加关系,如果在映射关系中,就看映射的字符是否是另一个字符串中的字符,是的话就满足同构,继续遍历,否则不是同构就直接输出false。
方法二:可以通过数字代替字符,如果第一次出现,就为0,一次累加,然后将整个字符串转换为数字,然后比较两个数字是否相等,判断是否同构。
问题:
1、map的定义:unordered_map<char,char>;
2、map的查找;
附上C++代码:
class Solution { public: bool isIsomorphic(string s, string t) { unordered_map<char,char> tmps; unordered_map<char,char> tmpt; for(int i=0;i<s.length();i++) { char schar=s[i]; char tchar=t[i]; if(tmps.find(schar)!=tmps.end()&&tmps[schar]!=tchar) return false; if(tmpt.find(tchar)!=tmpt.end()&&tmpt[tchar]!=schar) return false; tmps[schar]=tchar; tmpt[tchar]=schar; } return true; } };
附上python代码:
{}定义字典
class Solution: def isIsomorphic(self, s: str, t: str) -> bool: ms,mt={},{} for i in range(len(s)): if ms.get(s[i])!=mt.get(t[i]): return False ms[s[i]]=i mt[t[i]]=i return True
相关文章推荐
- LeetCode-探索-初级-字符串-反转字符串-java
- LeetCode-探索-初级-字符串-验证回文字符串-java
- LeetCode探索模块初级算法字符串章节python3代码实现
- LeetCode-探索-初级-字符串-整数反转-java
- LeetCode-探索-初级-字符串-字符串中的第一个唯一字符-java
- LeetCode-探索-初级-字符串-有效的字母异位词-java
- 最小窗口子字符串 LEETCODE 探索提升遇到的第一个困难的题目。
- LeetCode 13 罗马数字转整数(字符串)
- [编写高质量代码:改善java程序的151个建议]建议59 对字符串排序(中文)
- leetCode 58. Length of Last Word 字符串
- Leetcode 59. Spiral Matrix II
- 【LeetCode】476. Number Complement【E】【59】
- leetcode -- 537. Complex Number Multiplication【字符串解析 + 复数相乘计算机实现】
- LeetCode 345 Reverse Vowels of a String(字符串操作)
- Java中字符串探索—-String ,StringBuffer ,StringBuilder及字符串缓存池
- leetcode-59 Spiral Matrix
- LeetCode:找出字符串中第一个只出现一次的字符
- leetcode-反转字符串
- Leetcode 91. Decode Ways 解码方法(动态规划,字符串处理)
- leetcode之反转给定字符串中的单词