Leetcode205. Isomorphic Strings

原题

Given two strings s and t, determine if they are isomorphic.

Two strings are isomorphic if the characters in s can be replaced to get t.

All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.

For example,
Given "egg", "add", return true.

Given "foo", "bar", return false.

Given "paper", "title", return true.

题意
给出两个字符串,判断字符串是否是同构的字符串
思路
定义一个hashmap,一一对应的关系,如果出现不一样的一样对应,则说明不是同构。
同时定义一个set集合,保证map中的值是唯一对应的,比如“ab”和“aa”就不是同构的,因为a对应a,但是b就不能对应a了,得对应一个非a的数值。
这里考察的hashmap的使用方法。
代码

public class Solution {
    public boolean isIsomorphic(String s, String t) {
        if(s.length()!=t.length())return false;
        HashSet<Character>set=new HashSet<>();
        HashMap<Character, Character>map=new HashMap<>();
        for(int i=0;i<s.length();i++){
        //map集合中不包含s的第i和字符,并且t的第i个字符没有在集合中出现,则把这一对应关心添加到map中
            if(!map.containsKey(s.charAt(i))){
                if(!set.contains(t.charAt(i))){
                    map.put(s.charAt(i), t.charAt(i));
                    set.add(t.charAt(i));
                }
                //否则则不是同构的关系
                else return false;
            }
            //如果map中包含s的第i个字符,则看第i个对应的值是否是和t中第i个字符相同
            else{
                if(map.get(s.charAt(i))!=t.charAt(i))return false;
            }

        }
        return true;

    }
}

原题链接
该题和290. Word Pattern这个题相似,见博客http://blog.csdn.net/weifang0626/article/details/53958476

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值