Isomorphic Strings

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.

Note:
You may assume both s and t have the same length.

var isIsomorphic = function(s, t) {
    var shash = {},
    	thash = {},
    	str,
    	ttr;
    for(var i = 0,len = s.length;i < len; i++){
    	str = s.charAt(i);
    	ttr = t.charAt(i);
    	if(!shash[str]){
    		shash[str] = ttr;
    	}
    	if(!thash[ttr]){
    		thash[ttr] = str;
    	}
    	if(shash[str] && shash[str] !== ttr){
    		return false;
    	}
    	if(thash[ttr] && thash[ttr] !== str){
    		return false;
    	}
    }
    return true;
};

感觉做的复杂了点,两个hash

发表评论

电子邮件地址不会被公开。 必填项已用*标注