欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-17 08:56:58
...

205. 同构字符串

难度:简单
题目描述
205. 同构字符串 哈希表保存映射
解题思路

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

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

/*
		 * 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;
	    }

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

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;
	    }

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

相关标签: 力扣刷题笔记