# 205. 同构字符串 [String][Easy] 给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。 示例 1: ``` 输入:s = "egg", t = "add" 输出:true ``` 示例 2: ``` 输入:s = "foo", t = "bar" 输出:false ``` 示例 3: ``` 输入:s = "paper", t = "title" 输出:true ``` 題解思路: 題目說到字串t可以唯一映射到s,字串s也可以唯一映射到t a -> e d -> g 反之 e -> a g -> d 可用map來處理映射,對於s映射到t 可以同時遍歷s,t,當前遇到每個字母分別為c1、c2 如果map[c1]存在,map[c1]是否與c2相等,也就是檢驗之前映射的字母是否與當前字母是否相同。 ```java= class Solution { public boolean isIsomorphic(String s, String t) { return isIsomorphicHelper(s, t) && isIsomorphicHelper(t, s); } private boolean isIsomorphicHelper(String s, String t){ Map<Character, Character> map =new HashMap<>(); for(int i=0;i<s.length();i++){ char c1 = s.charAt(i); char c2 = t.charAt(i); if(map.containsKey(c1)){ if(map.get(c1) != c2){ return false; } }else{ map.put(c1, c2); } } return true; } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up