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<Character, Integer> 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()方法主要将字符串转换成数字表示的形式数组。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容