638. String Homomorphism

温柔一刀。

这个讲究的是一对一的定义,严格的一对一。所以,下面哪里错了?

if(s.length()!=t.length()) return false;
 HashMap<Character, Character> map = new HashMap<Character, Character>();
 
 for(int i=0; i<s.length(); i++){
 char sc = s.charAt(i);
 char tc = t.charAt(i);
 
 if(!map.containsKey(sc)){
 map.put(sc, tc);
 }else{
 if(map.get(sc)!=tc){
 return false;
 }}
 }
 
 return true;

错在如果sc想匹配tc,但是如果tc已经被之前的匹配过了,就不可以再匹配了,否则就成了一个sc可以对应多个tc。

所以差一句

if(!map.containsKey(sc)){
 if(map.containsValue(tc)){
 return false;
 }
 map.put(sc, tc);
 }

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.