您的位置:首页 > 编程语言 > Python开发

python_lintcode_52翻转字符串_128哈希函数

2017-09-21 15:57 253 查看

52翻转字符串

题目

给定一个字符串,逐个翻转字符串中的每个单词。

您在真实的面试中是否遇到过这个题? Yes

说明

单词的构成:无空格字母构成一个单词

输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括

如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个

样例

“this is a book”

输出:

“siht si a koob”

思路

一开始以为是将字符串的每一个单词进行翻转

代码:

class Solution:
"""
@param: s: A string
@return: A string
"""
def reverseWords(self, s):
# write your code here
if s=="":return s
#将s进行切片,按空格
s=s.split()
for i in range(len(s)):
#翻转单词
s[i]=s[i][::-1]
#将s进行组合,按空格
a=" "
a=a.join(s)
return a


a=Solution();a.reverseWords(“this is a book”)

‘siht si a koob’

后面发现直接就是将字符串内的单词进行翻转(无辜脸)

将字符串直接按空格切片,然后再将字符串翻转,用s[::-1],然后再用空格进行组合成新的字符串。

代码

class Solution:
"""
@param: s: A string
@return: A string
"""
def reverseWords(self, s):
# write your code here
if s=="":return s
#将s进行切片,按空格
s=s.split()
s=s[::-1]
#将s进行组合,按空格
a=" "
a=a.join(s)
return a


128哈希函数

题目

http://www.lintcode.com/zh-cn/problem/hash-function/#

在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数。一个好的哈希函数可以尽可能少地产生冲突。一种广泛使用的哈希函数算法是使用数值33,假设任何字符串都是基于33的一个大整数,比如:

hashcode(“abcd”) = (ascii(a) * 333 + ascii(b) * 332 + ascii(c) *33 + ascii(d)) % HASH_SIZE

= (97* 333 + 98 * 332 + 99 * 33 +100) % HASH_SIZE

= 3595978 % HASH_SIZE


其中HASH_SIZE表示哈希表的大小(可以假设一个哈希表就是一个索引0 ~ HASH_SIZE-1的数组)。

给出一个字符串作为key和一个哈希表的大小,返回这个字符串的哈希值。

您在真实的面试中是否遇到过这个题? Yes

说明

For this problem, you are not necessary to design your own hash algorithm or consider any collision issue, you just need to implement the algorithm as described.

样例

对于key=”abcd” 并且 size=100, 返回 78

思路

这道题按着公式进行运算即可,只是很容易出现时间和内存问题

可将33**n,转化为res=res * 33,解决 Time Limit Exceeded

ord(a) #a的ascii码

chr(b) #b是ascii码,它对应的字符是

代码

class Solution:
"""
@param: key: A string you should hash
@param: HASH_SIZE: An integer
@return: An integer
"""
def hashCode(self, key, HASH_SIZE):
# write your code here
result=0
res=1
for i in range(len(key)-1,-1,-1):
result=ord(key[i])*res%HASH_SIZE+result
res=res*33%HASH_SIZE
result=result%HASH_SIZE
return result
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: