同构字符串

class Solution{
    public boolean isIsomorphic(String s, String t) {
        int n = s.length();
        HashMap<Character,Character> map = new HashMap<>();
        for(int i = 0; i<n ; i++){
            char c1 = s.charAt(i);
            char c2 = t.charAt(i);
            if(map.get(c1) == null){
            if(map.containsValue(c2)){//判断Value中是否有c2
                return false;
            }
            map.put(c1,c2);//为空将c1,c2加入map
            }else if(map.get(c1)!= c2){//判断这里的c1对应的c2是否和map存储的相等
            return false;
                    }
                }
        return true;
    }
}
### Python实现同构字符串 为了验证两个字符串是否为同构字符串,可以采用字典来记录字符之间的映射关系。具体来说,在遍历给定的两个字符串时,对于每一个位置上的字符,检查第一个字符串中的字符是否已经存在于字典`compareDict`中;如果存在,则进一步确认该字符所映射的目标字符是否与当前第二个字符串相应位置上的字符相同[^1]。 当遇到新的字符对时,将其加入到字典中作为键值对存储起来。一旦发现任何一对字符违反了一一对应的原则——即同一个源字符被映射到了不同的目标字符上,或是不同源字符却共享了同一目标字符的情况发生时,立即返回`False`表示这两个字符串不是同构的。只有在整个遍历过程中都没有出现问题的情况下才会最终返回`True`表明两串确实互为同构[^2]。 下面是一个完整的解决方案: ```python class Solution: def isIsomorphic(self, s: str, t: str) -> bool: compareDict = {} sLen = len(s) for i in range(sLen): if s[i] not in compareDict: # 防止t中有重复字符而s中没有相对应的不同字符 if t[i] in compareDict.values(): return False compareDict[s[i]] = t[i] elif compareDict[s[i]] != t[i]: return False return True ``` 此代码不仅考虑了从`s`到`t`的一对一映射,还通过额外检查`compareDict.values()`防止了`t`中存在的多个不同字符试图映射回`s`中单个字符的情形,从而确保了双向唯一性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值