繁体   English   中英

如何在gethash javascript function中查找带有特定字母的字符串

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM