---
# System prepended metadata

title: '205. 同构字符串 [String][Easy]'

---

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

```

