Java刷题随笔---205. 同构字符串

LeetCode链接

难度:简单
题目描述:给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

分析

本题主要判断两个字符串s和t是否为同构,同构简单的解释一下就是两个字符串的组成形式是否一致,例如s=egg,t=add,s为ABB形式组成的字符串,t也是为ABB形式组成的字符串。
清楚了什么是同构,就可以把问题简化成字符串s的组成形式和字符串t的组成形式之间的比较,也即ABB的比较,为了方便比较建议换成数字进行比较。

解题

class Solution {
        public boolean isIsomorphic(String s, String t) {
            if (s.length() != t.length()) {
                return false;
            }
            int[] sInts = intsToStrings(s);
            int[] tInts = intsToStrings(t);
            for (int i = 0; i < s.length(); i++) {
                if (sInts[i] != tInts[i]) return false;
            }
            return true;
        }

        private int[] intsToStrings(String s) {
            Map maps = new HashMap<>();
            int[] result = new int[s.length()];
            for (int i = 0; i < s.length(); i++) {
                if (maps.containsKey(s.charAt(i))) {
                    result[i] = maps.get(s.charAt(i));
                } else {
                    maps.put(s.charAt(i), maps.size() + 1);
                    result[i] = maps.get(s.charAt(i));
                }
            }
            return result;
        }

intsToStrings()方法主要将字符串转换成数字表示的形式数组。

你可能感兴趣的:(Java刷题随笔---205. 同构字符串)