`

Linkedin Interview - Isomorphic Strings

阅读更多

Given two strings, determine if they are isomorphic. 

Two words are called isomorphic if the letters in one word can be remapped to get the second word. Remapping a letter means replacing all occurrences of it with another letter while the ordering of the letters remains unchanged. No two letters may map to the same letter, but a letter may map to itself.

Examples: 

Given 'foo', 'app', returns true
We can map 'f' -> 'a' and 'o' -> 'p'

Given 'bar', 'foo', returns false
We can’t map both 'a' and 'r' to 'o'

Given 'turtle', 'tletur', returns true
We can map 't' -> 't', 'u' -> 'l', 'r' -> 'e', 'l' -> 'u', 'e' -'r'

Given 'ab', 'ca', returns true
We can map 'a' -> 'c', 'b' -> 'a'

 

public boolean is_isomorphic(String s, String t) {
    if(s.length() != t.length()) return false;
    Map<Character, Character> mapS = new HashMap<>(), 
    mapT = new HashMap<>();
    
    for(int i=0; i<s.length(); i++) {
        char cs = s.charAt(i);
        char ct = t.charAt(i);
        if(!mapS.containsKey(cs)) {
            mapS.put(cs, ct);
        } else if(mapS.get(cs) != ct) {
            return false;
        }
        
        if(!mapT.containsKey(ct)) {
            mapT.put(ct, cs);
        } else if(mapT.get(ct) != cs) {
            return false;
        }
    }
    return true;
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics