同构字符串 【LeetCode 字典dict的使用】

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

如果 中的字符可以被替换得到 ,那么这两个字符串是同构的。

所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。

示例 1:

输入: s = "egg", 
t = "add"

输出: true

示例 2:

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

输出: false

示例 3:

输入: s = "paper", 
t = "title"

输出: true

说明:
你可以假设 和 具有相同的长度。

    思路:我们要保存s中的字符到t中字符的映射,可以使用HashMap来存放映射关系,需要两个map才能确定他们之间的关系为一 一映射的关系,如果只使用一个map,遇到s="ad",t="aa"时就会出错,这就像数据库中的一对一的关系,所以使用两个map,一个为s到t,一个为t到s。

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        System.out.println(isIsomorphic("aa","aa"));
    }

    public static boolean isIsomorphic(String s, String t) {
        if(s.length()!=t.length()){
            return false;
        }
        HashMap<Character,Character> map=new HashMap();
        HashMap<Character,Character> map1=new HashMap();
        char[] c1 = s.toCharArray();
        char[] c2 = t.toCharArray();
        //将c1中的字符串对应带c2中
        for (int i = 0; i < c1.length; i++) {
            Character ValueT = map.put(c1[i], c2[i]);//如果存放后返回null,则说明c1[i]没有对应值,可以放入,
            Character ValueS = map1.put(c2[i], c1[i]);
            if(ValueT!=null && ValueT!=c2[i]){
                return false;
            }
            if(ValueS!=null && ValueS!=c1[i]){
                return false;
            }
        }
        return true;
    }
}
发布了225 篇原创文章 · 获赞 30 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_35634181/article/details/83055882