leetcode 205. Isomorphic Strings|Java最短コード実装

1111 ワード

原題リンク:
205. Isomorphic Strings
【考え方】
HashMapデータ構造を使用する必要があります.mapには、sの各文字をmapのkey、tの各文字をmapのvalueとするマッピングのペアが格納されます.次の順に移動します.
1.mapにkeyが含まれていない場合は、keyとvalueのペアをmapに格納します.もちろん、保存されたvalueがtに表示されないことを保証する必要があります.そうしないと、s=「abc」になり、t=「aaa」もtrueに戻る可能性があります.HashSetが必要です.
2.mapにkeyが含まれている場合、対応する対応するvalueを取り出し、そのvalueとtの対応する位置のcharを比較し、等しくなければfalseを返す
    public boolean isIsomorphic(String s, String t) {
        HashSet<Character> set = new HashSet<Character>();
        HashMap<Character, Character> map = new HashMap<Character, Character>();
        for (int i = 0; i < s.length(); i++) {
            if (!map.containsKey(s.charAt(i))) {
                map.put(s.charAt(i), t.charAt(i));
                if (!set.add(t.charAt(i))) return false;  //       s = "abc", t = "aaa"  
            } else {
                if (map.get(s.charAt(i)) != t.charAt(i)) return false;
            }
        }
        return true;
    }

30/30 test cases passed. Runtime: 25 ms  Your runtime beats 58.39% of javasubmissions.