leetcode:205. 同构字符串(java实现)

在这里插入图片描述在这里插入图片描述

问题分析:

当给定的s和t为空时,直接返回false

if(s==null||t==null) {
       		  return false;
       	  }
       	 

由于给定的两个字符串s和t长度时一样的,所以我们就不用判断这个问题。我们可以直接创建s到t的映射。

重点: 如下图

在这里插入图片描述

Map<Character,Character> map=new HashMap<>();//s到t的映射
           for(int i=0;i<s.length();i++) {//遍历键的长度,准备添加k到map中
       		  if(!map.containsKey(s.charAt(i))) {//如果键不存在map中,就新添
       		  //s:foo   t:ccd 
       		  /*
       		  考虑到这种情况,也就是我上图的重点,如果在添加键值对的时候,
       		  f对应的是c,
       		  第二次添加的时候 o对应的也是c,f和o对应的value一样,
       		  那么就不符合我们的题意了。
       		  所以直接返回false。反之则添加
       		  */
       			  if(!map.containsValue(t.charAt(i))) {//对value判断
       				map.put(s.charAt(i), t.charAt(i));
       			  }else {
       				  return false;
       			  }
       		  }else {//示例2 当s对应的k键值和下一个k键值相等时,那么就判断他们两个
       		  //对应的value是否相等。
       			if(map.get(s.charAt(i))!=t.charAt(i)) {
    				return false;
    			}
       		  }
       	  }
		return true;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42405666/article/details/89505365