카테고리 없음

[릿코드/javascript] Isomorphic Strings

_서리__ 2023. 3. 23. 11:12
/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isIsomorphic = function(s, t) {
    //객체에 index 저장하고, 양쪽 index 가 같으면..??
    const sObj = {}
    const tObj ={}
    const sArr = [];
    const tArr = [];
    for(let i = 0;i<s.length;i++){
        if(sObj[s[i]]) sObj[s[i]].push(i)
        else sObj[s[i]] = [i]
    }
    for(let i = 0;i<t.length;i++){
        if(tObj[t[i]]) tObj[t[i]].push(i)
        else tObj[t[i]] = [i]
    }
    for(let key in sObj){
        sArr.push(sObj[key])
    }
    for(let key in tObj){
        tArr.push(tObj[key])
    }
    sStr = sArr.map((el)=>el.join(''))
    tStr = tArr.map((el)=>el.join(''))
    let answer = sStr.filter((x)=>!tStr.includes(x))
    return !answer.length;

};

처음 푼 풀이

var isIsomorphic = function(s, t) {
    // Base case: for different length of two strings...
    if(s.length != t.length)
        return false;
    // Create two maps for s & t strings...
    const map1 = {};
    const map2 = {};
    // Traverse all elements through the loop...
    for(let idx = 0; idx < s.length; idx++){
        // Compare the maps, if not equal, return false...
        if(map1[s[idx]] != map2[t[idx]])
            return false;
        // Insert each character if string s and t into seperate map...
        map1[s[idx]] = idx
        map2[t[idx]] = idx 
    }
    return true;    // Otherwise return true...
};

다른사람의 풀이를 참고하여 다시 푼 풀이