您可以將字符串以lower
功能爲小寫,並通過在單詞中的字符進行迭代,用for
循環,這樣
def special_hash(word, tablesize):
for char in word.lower():
...
然後,可以得到與該字符對應的字符代碼0功能。
def special_hash(word, tablesize):
total_value = 0
for char in word.lower():
total_value += ord(char) - ord('a') + 1
由於我們需要從字母中獲取字符的偏移量,因此可以從當前值中減去第一個值。最後,您可以使用模運算%
通過tablesize
def special_hash(word, tablesize):
total_value = 0
for char in word.lower():
total_value += ord(char) - ord('a') + 1
return total_value % tablesize
同樣得到的餘數可以用generator expression succintly書面和內置sum
功能,這樣
def special_hash(word, tablesize):
return sum(ord(char) - ord('a') + 1 for char in word.lower()) % tablesize
什麼是'tablesize'? – thefourtheye 2014-10-10 05:28:14
做「J」和「j」哈希是否一樣? – mgilson 2014-10-10 05:28:19
@thefourtheye - 我認爲表格大小是13。 – mgilson 2014-10-10 05:28:59