Day 23
题目描述
思路
见代码
class Solution {public boolean isIsomorphic(String s, String t) {if(s.length()!=t.length()){//如果两个字符串长度不同 直接不可能同构return false;}HashMap<Character,Character>map=new HashMap<>();//存放s到t的映射HashMap<Character,Character>map1=new HashMap<>();//存在t到s的映射for(int i=0;i<s.length();i++){if(map.containsKey(s.charAt(i))){//如果s的字符存在对t字符的映射if(map.get(s.charAt(i))!=t.charAt(i)){//不等说明一个s[i]字符对应的不止一个t的字符return false;}}else{if(map1.containsKey(t.charAt(i))){//防止出现aabc和bbaa的情况return false;}else{map.put(s.charAt(i),t.charAt(i));map1.put(t.charAt(i),s.charAt(i));}}}return true;}
}
题目描述
思路
做法如下:
- 首先需要将s按照" "分离成字符串数组
- 类似于上题的做法(见代码)
class Solution {public boolean wordPattern(String pattern, String s) {String[] split = s.split(" ");//根据“ ”分离为字符串数组if(split.length!=pattern.length()){//剩下的类似于上题目 s和patternreturn false;}HashMap<Character, String> map = new HashMap<>();HashMap<String,Character> map1 = new HashMap<>();for(int i=0;i<pattern.length();i++ ){if(map.containsKey(pattern.charAt(i))){if(!map.get(pattern.charAt(i)).equals(split[i])){return false;}}else{if(map1.containsKey(split[i])){return false;}map.put(pattern.charAt(i),split[i]);map1.put(split[i],pattern.charAt(i));}}return true;}
}