[英]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.