2015年10月24日星期六

Leetcode 205 Isomorphic Strings

Given two strings s and t, determine if they are isomorphic.
Two strings are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.
For example,
Given "egg""add", return true.
Given "foo""bar", return false.
Given "paper""title", return true.
Solution 1: Use 2 hash map record s->t and t->s mapping.
 public class Solution {  
   public boolean isIsomorphic(String s, String t) {  
     if (s.length()!=t.length()) return false;  
     Map<Character,Character> map1=new HashMap<>();  
     Map<Character,Character> map2=new HashMap<>();  
     for (int i=0; i<s.length(); i++) {  
       char c1=s.charAt(i), c2=t.charAt(i);  
       if (map1.containsKey(c1)) {  
         if (map1.get(c1)!=c2) return false;  
       }  
       else map1.put(c1,c2);  
       if (map2.containsKey(c2)) {  
         if (map2.get(c2)!=c1) return false;  
       }  
       else map2.put(c2,c1);  
     }  
     return true;  
   }  
 }  

没有评论:

发表评论