天天看點

leetcode算法205.同構字元串

哈喽!大家好,我是【學無止境小奇】,一位熱愛分享各種技術的部落客!

⭐【學無止境小奇】的創作宗旨:每一條指令都親自執行過,每一行代碼都實際運作過,每一種方法都真實實踐過,每一篇文章都良心制作過。✊✊✊

⭐【學無止境小奇】的部落格中所有涉及指令、代碼的地方,除了提供圖檔供大家參考,另外會在圖檔下方提供一份純文字格式的指令或者代碼友善大家粘貼複制直接執行指令或者運作代碼。

⭐如果你對技術有着濃厚的興趣,歡迎關注【學無止境小奇】,歡迎大家和我一起交流。

❤️❤️❤️感謝各位朋友接下來的閱讀❤️❤️❤️

文章目錄

  • ​​一、leetcode算法​​
  • ​​ 1、同構字元串​​
  • ​​1.1、題目​​
  • ​​1.2、思路​​
  • ​​1.3、答案​​

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