一、leetcode算法
1、同构字符串
1.1、题目
给定两个字符串 s 和 t ,判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
示例 1:
输入:s = “egg”, t = “add”
输出:true
示例 2:
输入:s = “foo”, t = “bar”
输出:false
示例 3:
输入:s = “paper”, t = “title”
输出:true
1.2、思路
思路一:此题我们我们根据题意可以使用两个哈希表来解决,这个可以将映射关系对应起来,假如第一张表的a和第二张表的b,我们在第一个哈希表中可以已a为键,以b为值,在第二个哈希表中可以以b为键,以a为值,当第一个表中再出现a的时候我们可以将a的值b取出来,和当前b的值来进行比较即可得出当前数是否正确。
1.3、答案
class Solution { public boolean isIsomorphic(String s, String t) { //定义两个哈希表 Map<Character,Character> smap = new HashMap<Character,Character>(); Map<Character,Character> tmap = new HashMap<Character,Character>(); int len = s.length(); for(int i = 0; i < len; i++){ char x = s.charAt(i), y = t.charAt(i); if((smap.containsKey(x) && smap.get(x) != y) || (tmap.containsKey(y) && tmap.get(y) != x)){ return false; } smap.put(x,y); tmap.put(y,x); } return true; } }