[英]How to find a string with specific letters in gethash javascript function
function getHash( string ) {
let h = 7, letters = "acdefhlmnoprstuw";
for( var i = 0; i < string.length; i++ ) {
h = ( h * 37 + letters.indexOf( string[ i ] ) );
}
return h;
}
我的任務是編寫一個代碼來查找包含以下一些字母的字符串:ACDEFHLMNOPRSTUW
這樣 function getHash(THE SEARCHING STRING) 得到的結果是 18794359164。
我沒有給你一些代碼,只是一些提示。
要了解代碼,您已經了解了代碼,而您想要了解的代碼是使用 gunction 獲取一個字符串並從中獲取 hash 值。
例如,以'wonder'
為例,得到
19017519751
作為 hash 值。
該值包含一個起始值 7 ( h = 7
),對於每個字母,它將h
乘以37
(該值看起來像是為 37 個不同的字符創建的)並加上letters
的索引值。
要得到一個數值的相反數,你需要將一個rest除以37
得到一個字母的索引,正好相反,用一個字母給hash加上一個值。
例如取上面的值19017519751
除以37
得到rest
19017519751 % 37 -> 11 r
現在有了最后一個字母(記住編碼從單詞的開頭到結尾,解碼從結尾開始),你需要得到一個沒有最后一個字母的值。
通過編碼,您將每個最后的總和乘以 37,這在這里也適用,但以相反的方式,您需要一個 integer 值。 只需除以37
並取下一個字母的底值。
rest 看起來像這樣:
513987020 % 37 -> 3 e
13891541 % 37 -> 2 d
375447 % 37 -> 8 n
10147 % 37 -> 9 o
274 % 37 -> 15 w
最后,您需要進行檢查以停止迭代,並且該值是編碼的第一個值7
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.