【字符串】【打卡125天】:leetcode 205. 同构字符串

1、题目描述

给定两个字符串 s 和 t,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

2、算法分析

 题目说的是判断两个字符串 s 和 t,判断它们是否是同构的。

本题使用的是Map映射。

也就是说 add-->egg,a映射e,d映射g。

根据题目中给的示例,o重复的一定是映射同一个字符。

输入:s = "foo", t = "bar"
输出:false

接下来,判断map中是否包含这个key,不包含的话就put,包含的话,就看映射的是否为原来c1映射的。不是的话返回false;

3、代码实现

import java.util.*;
class Solution {
    public boolean isIsomorphic(String s, String t) {
       return isBuild(s,t) && isBuild(t,s);
    }
    public boolean isBuild(String s, String t){
         if(s.length() != t.length()){
            return false;
        }
        Map<Character,Character> map = new HashMap<>();
        // 遍历字符串,当然s,t的字符串长度都是相等的。
        for(int i = 0;i < s.length();i++){
            // 获取s,t字符串的字符
            char c1 = s.charAt(i);
            char c2 = t.charAt(i);
            // 判断映射关系
            if(!map.containsKey(c1)){
                map.put(c1,c2);
            }else{
                if(map.get(c1) != c2){
                    return false;
                }
            }
        }
        return true;
    }
}

猜你喜欢

转载自blog.csdn.net/Sunshineoe/article/details/121629890