在Python中,如何按两个单词之间的顺序计算常用字母?
我有一个字符串在Python中,如何按两个单词之间的顺序计算常用字母?,python,python-3.x,Python,Python 3.x,我有一个字符串pizzas,当与pizza比较时,它是不同的。如何制作一个计算两个单词之间常用字母(顺序)的程序,如果它是60%匹配,那么变量match是True 例如,pizz和pizzas共有6个字母中的4个,这是66%的匹配,这意味着match必须是True,但是zzip和pizzas没有任何共同的字母顺序,因此,match为False您可以编写一个函数来实现此逻辑 zip用于同时循环两个字符串 def checker(x, y): c = 0 for i, j in zi
pizzas
,当与pizza
比较时,它是不同的。如何制作一个计算两个单词之间常用字母(顺序)的程序,如果它是60%匹配,那么变量match
是True
例如,
pizz
和pizzas
共有6个字母中的4个,这是66%的匹配,这意味着match
必须是True
,但是zzip
和pizzas
没有任何共同的字母顺序,因此,match
为False
您可以编写一个函数来实现此逻辑
zip
用于同时循环两个字符串
def checker(x, y):
c = 0
for i, j in zip(x, y):
if i==j:
c += 1
else:
break
return c/len(x)
res = checker('pizzas', 'pizz') # 0.6666666666666666
这将直接返回LCS的长度。逐个比较每个字母,并记录点击次数。最后,计算点击数与总长度。。并且我认为你应该澄清“比萨兹”和“比萨兹”是否应该是匹配的,因为如果你不允许中间出现中断,任务就更简单了。你可能会发现(或其他度量)对字符串相似性有用。
def longestSubstringFinder(string1, string2):
answer = ""
len1, len2 = len(string1), len(string2)
for i in range(len1):
match = ""
for j in range(len2):
if (i + j < len1 and string1[i + j] == string2[j]):
match += string2[j]
else:
if (len(match) > len(answer)): answer = match
match = ""
return answer
ss_len = len(longestSubstringFinder("pizz", "pizzas"))
max_len = max(len("pizza"),len("pizzas"))
percent = ss_len/max_len*100
print(percent)
if(percent>=60):
print("True");
else:
print("False")
def LCSubStr(X, Y, m, n):
LCSuff = [[0 for k in range(n+1)] for l in range(m+1)]
result = 0
for i in range(m + 1):
for j in range(n + 1):
if (i == 0 or j == 0):
LCSuff[i][j] = 0
elif (X[i-1] == Y[j-1]):
LCSuff[i][j] = LCSuff[i-1][j-1] + 1
result = max(result, LCSuff[i][j])
else:
LCSuff[i][j] = 0
return result