算法地址: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));
}
}