当前位置:网站首页>Leecode-205. 同构字符串

Leecode-205. 同构字符串

2022-08-09 23:26:00 风吟Pro

在这里插入图片描述
主要思路就是用哈希Map以K-V的形式来进行两个字符串同一个位置上的格式映射
leetcode官方思路

我们维护两张哈希表,
第一张哈希表s2t 以 s 的字符为键,映射至 t 的字符为值,
第二张哈希表t2s 以 t 的字符为键,映射至 s 的字符为值。
从左至右遍历两个字符串的字符,不断更新两张哈希表
如果出现冲突
(即当前下标 index 对应的字符 s[index] 已经存在映射且不为 t[index] 或当前下标 index 对应的字符 t[index] 已经存在映射且不为 s[index])时说明两个字符串无法构成同构,返回 false。
如果遍历结束没有出现冲突,则表明两个字符串是同构的,返回 true 即可。

class Solution {
    
    public boolean isIsomorphic(String s, String t) {
    
        //创建哈希表
        Map<Character, Character> s2t = new HashMap<Character, Character>();
        Map<Character, Character> t2s = new HashMap<Character, Character>();
        //这里不用管遍历多少遍,如果遍历都不不够长,那么必然是字符串长度不同,也就是不同构
        for(int i=0;i<s.length();++i){
    
            //拿到每个位置的字符
            char x=s.charAt(i);
            char y=t.charAt(i);
            //如果任意一个表的key已经存在,并且拿到的value和当前的目标value不一致,就代表映射失败
            if(s2t.containsKey(x)&&s2t.get(x)!=y||
              t2s.containsKey(y)&&t2s.get(y)!=x){
    
                  return false;
            }
            //匹配成功,把当前的映射存进两个表 
            s2t.put(x,y);
            t2s.put(y,x);
        }
        return true;
    }
}
原网站

版权声明
本文为[风吟Pro]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_46906696/article/details/126251693