205. 同构字符串 哈希表保存映射

这篇博客介绍了如何解决205号问题——同构字符串。通过使用哈希表或数组来保存字符间的映射关系,实现简单有效的解决方案。文章详细阐述了解题思路,包括两种不同的实现方法。
摘要由CSDN通过智能技术生成

205. 同构字符串

难度:简单
题目描述
在这里插入图片描述
解题思路

1、用哈希表保存映射关系

在这里插入图片描述

/*
		 * 205. 同构字符串
		 * 2020/6/10
		 */
		public boolean isIsomorphic(String s, String t) {
			if(s.length() != t.length())
				return false;
			HashMap<Character, Character> hashMap = new HashMap<>(); //哈希表存储一个映射
			char[] sh = s.toCharArray();
			char[] th = t.toCharArray();
			for (int i = 0;i < sh.length;i++) {
				char c1 = sh[i];
				char c2 = th[i];
				if(hashMap.containsKey(c1)) { //相应位置对应的字母一定要一致
					if(hashMap.get(c1) != c2)
						return false;
				}else {
					if(!hashMap.containsValue(c2)) { 
						//不能把两个字符映射到同一个字符,如果已经存在到这个字母的映射
						hashMap.put(c1, c2);
					}else {
						return false;
					}
				}
				
			}
			return true;
	    }

在这里插入图片描述

2、用数组来保存映射

因为字符的总数有限而且已知,所以可以直接用数组来保存映射关系

public boolean isIsomorphic1(String s, String t) {
			if(s.length() != t.length())
				return false;
			int[] snum = new int[128];
			int[] tnum = new int[128];
			char[] sh = s.toCharArray();
			char[] th = t.toCharArray();
			for (int i = 0;i < sh.length;i++) {
				char c1 = sh[i];
				char c2 = th[i];
				if(snum[c1] != tnum[c2]) {  //如果两个映射不一样
					return false;
				}else {
					//建立映射关系
					snum[c1] = i+1;
					tnum[c2] = i+1;
				}
				
			}
			return true;
	    }

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值