哈希算法
两数的和
两个数的和:数学课上,老师出了一道题目木。要求在给定的一些数字中找出两个数,使得他们的和为N,前提是这些数据中保证有答案,并且只有一个答案。例如给定五个数字:3,4,5,7,10.从中选出两个数是他们的和为“11”这个问题该如何解决?使用链表地址发解决哈希表的冲突
方法一:双指针法
def TowNums(nums,target):
res=[]
newnums=nums[:]
print(newnums)
newnums.sort()
left=0
right = len(newnums)-1
while left < right:
if newnums[left]+newnums[right]==target:
for i in range(0,len(nums)):
if nums[i] == newnums[left]:
res.append(i)
if nums[i] == newnums[right]:
res.append(i)
break
elif newnums[left]+newnums[right]<target:
left+=1
elif newnums[left]+newnums[right]>target:
right-=1
return(res[0]+1,res[1]+1)
nums=[4,7,3,5,10]
target=13
TowNums(nums,target)
def twonums(nums,target):
dict={}
for i in range(len(nums)):
m=nums[i]
if target-m in dict:
return (dict[target-m]+1,i+1)
dict[m]=i
twonums(nums,target)
单词模式匹配
def wordpattern(wordpattern,ip):
word = ip.split(' ')
hash1={}
used={}
if len(word) != len(wordpattern):
return False
for i in range(len(wordpattern)):
if wordpattern[i] in hash1:
if hash1[wordpattern[i]] != word[i]:
return False
else:
if word[i] in used:
return False
hash1[wordpattern[i]]=word[i]
used[word[i]] = True
return True
wp=['一','二','一','二']
input1='苹果 香蕉 苹果 香蕉'
print(wordpattern(wp,input1))
猜词游戏
猜词游戏
def gethint(secert,guess):
A,B=0,0
secert_dict={}
guess_dict={}
for i in range(len(secert)):
if secert[i]==guess[i]:
A+=1
else:
if secert[i] in secert_dict:
secert_dict[secert[i]]+=1
else:
secert_dict[secert[i]]=1
if guess[i] in guess_dict:
guess_dict[guess[i]]+=1
else:
guess_dict[guess[i]]=1
for digit in secert_dict:
if digit in guess_dict:
B+=min(secert_dict[digit],guess_dict[digit])
return str(A)+'A'+str(B)+'B'
s='1123'
g='9115'
gethint(s,g)
神奇的词根
import collections
def repalceword(dict,sentence):
d=collections.defaultdict(set)
s=collections.defaultdict(int)
sentence=sentence.split(' ')
for w in dict:
print(w[0])
d[w[0]].add(w)
s[w[0]]=max(s[w[0]],len(w))
for i,w in enumerate(sentence):
for j in range(s[w[0]]):
if w[:j+1] in d[w[0]]:
sentence[i]=w[:j+1]
break
return ' '.join(sentence)
dic=['cat','bat','rat']
se='the cattle was rattled by the battery'
repalceword(dic,se)