什么是等价的C/C++;python中的loselose算法
由于一个特殊的原因,我试图找到(并非穷尽)最差的散列算法。我在分析中找到了一些,并针对Loselose算法。用C(我认为)表示算法如下: 我不是程序员,C++中的C(或C++)是在扼杀我。你能给我一个帮助,并提供python中的等价物吗什么是等价的C/C++;python中的loselose算法,python,c++,c,algorithm,hash,Python,C++,C,Algorithm,Hash,由于一个特殊的原因,我试图找到(并非穷尽)最差的散列算法。我在分析中找到了一些,并针对Loselose算法。用C(我认为)表示算法如下: 我不是程序员,C++中的C(或C++)是在扼杀我。你能给我一个帮助,并提供python中的等价物吗 注:对于那些问“为什么是最糟糕的散列?”的人,我打算创建set2,一个与原始set1“等价”的集合,但由于高算法散列冲突,元素减少了。我不需要回到原来的场景1。我只需要知道在SET2中是否存在散列。< /P> < P>您提供的C++代码简单地对给定字符串的每个字
注:对于那些问“为什么是最糟糕的散列?”的人,我打算创建set2,一个与原始set1“等价”的集合,但由于高算法散列冲突,元素减少了。我不需要回到原来的场景1。我只需要知道在SET2中是否存在散列。< /P> < P>您提供的C++代码简单地对给定字符串的每个字符进行迭代,并将其ASCII值添加到变量<代码> Hash < /C>中,并返回<代码>散列< /C> > /< 通过这样做,我们可以在Python 2.7中实现同样的效果:
def custom_hash(s):
hsh = 0
for c in s: hsh += ord(c)
return hsh
或者,你也可以试着做一个Pythonic,在同一行中做同样的事情:)
while(c=*str++)
相当于while((c=*str++)!=0)
。这不是翻译服务。FWIW,我认为最接近Python的等价物应该是def hash(s):返回和(bytearray)(s))
。当然最糟糕的hash算法就是返回0代码>(或任何其他常数)?@OliverCharlesworth-当然,除了42以外的任何常数。
def custom_hash(s):
hsh = 0
for c in s: hsh += ord(c)
return hsh
hsh = reduce(lambda x, y: ord(x) + ord(y), list(s))