当先锋百科网

首页 1 2 3 4 5 6 7

算法地址:https://leetcode.com/problems/isomorphic-strings/?envType=study-plan&id=level-1

解题官方思路:https://leetcode.com/problems/isomorphic-strings/solutions/1261227/isomorphic-strings/

基本思路:使用HashMap,将没有重复的character作为key存到HashMap中,当前character的index作为value存入HashMap中。后面再遇到相同的character,获取其index值,然后当前string的character位置为原来character的index,做到模式匹配的作用。

注意点: builder.append(" "); 不可以🙅省去: 把index值隔开,防止出现两个或多个index 的情况连在一起,导致匹配模型出错。

class Solution {

    public String extractPattern(String s){

        Map<Character,Integer> map = new HashMap<>();
        StringBuilder builder = new StringBuilder();

        for(int i = 0 ; i < s.length() ; i++){
            char c = s.charAt(i);
            if(!map.containsKey(c)){
                map.put(c,i);
            }
            builder.append(Integer.toString(map.get(c)));
            builder.append(" ");
        }
        return builder.toString();

    }

    public boolean isIsomorphic(String s, String t) {
        return extractPattern(s).equals(extractPattern(t));
    }
}