[LeetCode]205. 同构字符串(java实现)哈希表
1. 题目
2. 读题(需要重点注意的东西)
思路(哈希映射):
-
同一个字符只能映射到另一个字符上
-
不能有两个字符映射到同一个字符上
因此,解题思路:
-
每次遍历两个字符串的同一个位置的字符
-
如果哈希表存在映射关系,则取出哈希表的值看映射的值是否正确,不正确则返回false
-
否则将映射关系存储进哈希表
-
如果所有的值都遍历结束,则返回true。
3. 解法
---------------------------------------------------解法---------------------------------------------------
class Solution {
// s到t的映射
Map<Character,Character> s2t = new HashMap<>();
// t到s的映射
Map<Character,Character> t2s = new HashMap<>();
public boolean isIsomorphic(String s, String t) {
for(int i = 0;i < s.length();i++){
char a = s.charAt(i);
char b = t.charAt(i);
// 判断映射关系是否成立
if(s2t.containsKey(a) && s2t.get(a) != b) return false;
if(t2s.containsKey(b) && t2s.get(b) != a) return false;
// 否则将映射关系加到哈希表中
s2t.put(a,b);
t2s.put(b,a);
}
return true;
}
}
可能存在的问题:
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- 哈希表
6. 总结
主要是读懂题意,不是两个字符串的结构相同,而是映射关系
相同。