首页 > 代码库 > 205. Isomorphic Strings
205. 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.
Solution1:
思路:用map来map对应的char。注意特殊情况aa,ab. 要记录t的字母是否遇到过,用一个boolean array来检查。
public class Solution { public boolean isIsomorphic(String s, String t) { if(s.length()!=t.length()) { return false; } boolean[] check=new boolean[128]; Map<Character,Character> res=new HashMap<Character,Character>(); for(int i=0;i<s.length();i++) { char a=s.charAt(i); char b=t.charAt(i); if(!res.containsKey(a)) { if(check[b]) { return false; } res.put(a,b); check[b]=true; } else { if(b==res.get(a)) { continue; } else { return false; } } } return true; }}
Solution2:用双map来一一对应。
Solution3:
Isomorphic strings, word pattern这类题都可以用map的containsvalue,containskey来做,很省事。
public class Solution { public boolean isIsomorphic(String s, String t) { if(s.length()!=t.length()) { return false; } Map<Character,Character> res=new HashMap<Character,Character>(); for(int i=0;i<s.length();i++) { char a=s.charAt(i); char b=t.charAt(i); if(!res.containsKey(a)) { if(res.containsValue(b)) { return false; } res.put(a,b); } else { if(b==res.get(a)) { continue; } else { return false; } } } return true; }}
205. Isomorphic Strings
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。