leetcode 205. Isomorphic Strings | Java 最短代码实现

原题链接: 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.


你可能感兴趣的:(java,LeetCode)