顯示廣告
隱藏 ✕
看板 Mesak
作者 mesak (Mesak)
標題 [JS] trello 面試題目
時間 2014年07月25日 Fri. PM 01:10:11


https://trello.com/jobs/developer

題目給出一串數字,必須要反解成為文字

Int64 hash (String s) {
    Int64 h = 7
    String letters = "acdegilmnoprstuw"
    for(Int32 i = 0; i < s.length; i++) {
        h = (h * 37 + letters.indexOf(s[i]))
    }
    return h
}


輸入 leepadg 得到 680131659347

求 910897038977002 是多少


首先看懂編譯方式比較重要,h初始值為7

根據輸入字串的長度 h 乘上 37 再加上 字典字串的位置

所以如果要反推,就是 數字減掉 N (字典字串的位置) 除以 37 = 整數 就是字串的解意

function get_string( num )
{
    var str = '';
    while( num > 7 )
    {
        for( i = 0; i < letters.length; i++)
        {
            var sp = (num-i) / 37;
            if(  /^[0-9]*[1-9][0-9]*$/.test( sp  ) )
            {
                str = letters[i] + str ;
                num = sp;
                break;
            }
        }
    }
    return str ;
}

http://jsfiddle.net/tnXLh/1/

--
※ 作者: mesak 時間: 2014-07-25 13:10:11
※ 編輯: mesak 時間: 2014-07-28 09:41:06
※ 看板: Mesak 文章推薦值: 0 目前人氣: 0 累積人氣: 277 
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇