题目:
判断两个字符串是否同构。同构的定义是,可以通过把一个字符串的某些相同的字符转换成
另一些相同的字符,使得两个字符串相同,且两种不同的字符不能够被转换成同一种字符。
思路:
1.大概思路
将问题转化一下:记录两个字符串每个位置的字符第一次出现的位置,如果两个字符串中相同位置的字符与它们第一次出现的位置一样,那么这两个字符串同构。举例来说,对于“paper”和“title”,假设我们现在遍历到第三个字符“p”和“t”,发现它们第一次出现的位置都在第一个字符,则说明目前位置满足同构。
2.具体思路:
维护两张哈希表,第一张哈希表 s2t 以 s 中字符为键,映射至 t 的字符为值,第二张哈希表 t2s 以 tt 中字符为键,映射至 s 的字符为值。从左至右遍历两个字符串的字符,不断更新两张哈希表,如果出现冲突(即当前下标 index 对应的字符s[index] 已经存在映射且不为t[index] 或当前下标 index 对应的字符 ]t[index] 已经存在映射且不为s[index])时说明两个字符串无法构成同构,返回 false。
如果遍历结束没有出现冲突,则表明两个字符串是同构的,返回 \rm truetrue 即可。
class Solution {
public boolean isIsomorphic(String s, String t) {
Map<