在Python中计算两个不同数字中连续匹配元素的数量
Posted
技术标签:
【中文标题】在Python中计算两个不同数字中连续匹配元素的数量【英文标题】:Count number of continuous matching elements in two different numbers in Python 【发布时间】:2020-07-14 09:06:45 【问题描述】:假设 我们有两个数字 a 和 b 我们需要计算这两个数字之间的连续匹配数字。
一些示例如下所示:
-
a = 123456 b = 456 ==> 我需要计算为:3 位数匹配
a = 556789 b = 55678 ==> 我需要计算为:5 位匹配
我不想要唯一但连续匹配的数字并且需要计数。还显示匹配的将很有帮助。如果数字,我们也可以在两个不同的列表中做吗?
我对 python 很陌生,尝试了一些东西。谢谢
【问题讨论】:
你能解释更多吗?我什么都听不懂 假设我们取两个数字 a = 123456 b = 456,我们可以看到 3 个数字,即 456 是连续且匹配的。所以需要计算匹配的位数。 Eg2:a = 556789 b = 55678 是数字,5 个数字是连续匹配的,所以我们算作 5。 看看你写的和你的测试用例,我认为说:len(str(b))
就足够了。但当然你的意思是别的(@BrunoMello 可能是对的),所以如果你可以编辑你的问题,让它更清楚。
抱歉,我无法正确提问。如果你们中的任何人觉得它不正确,可以建议我改变。我也会从中吸取教训并牢记在心,但这并不意味着我不应该问。最后我学到了一些东西,以及为什么每次都投反对票。它使正在努力学习的人灰心。我也得到了足够多的答案。
好吧,我们很高兴您得到了您所请求的帮助,但在我看来,投反对票是理所当然的。这不是咆哮,只是对错误的解释以及下次如何正确提问的建议。在这篇文章中,没有研究工作,没有甚至一行代码,文本格式错误 b>,而问题不清楚。 This guide 可能会帮助您下次提出更受欢迎的问题。
【参考方案1】:
您在这里想要的是最长的公共子字符串,您可以像这样找到它(此代码可以在这里找到Find common substring between two strings,只是您实际上想要 len(answer) 的一点不同):
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 len(answer)
注意 a 和 b 必须是字符串
【讨论】:
很高兴说您从这里复制了答案***.com/a/18717762/5296106 对不起,我忘了给适当的学分,只是编辑了它【参考方案2】:给定两个数字 a 和 b:
a = 123456
b = 456
首先你需要将它们转换为字符串:
a_str = str(a)
b_str = str(b)
那你需要检查a_str
中是否有b_str
的连续匹配:
if b_str in a_str:
...
终于可以查看b_str
的长度了:
len(b_str)
这是完整的功能:
def count_matching_elements(a, b):
a_str, b_str = str(a), str(b)
if b_str in a_str:
return len(b_str)
else:
return -1 # no matches
【讨论】:
感谢它在我添加的所有场景中都能正常工作。假设条件是 a = 99641 b = 8996241 那么它不会给出完全匹配的计数位数。比如如果 b_str 包含更多的数字然后 a 那么我们也可以找到计数吗? 你可以在开头做这样的事情:a, b = a, b if a > b else b, a
以上是关于在Python中计算两个不同数字中连续匹配元素的数量的主要内容,如果未能解决你的问题,请参考以下文章