看板 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
}
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 ;
}
{
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
回列表(←)
分享