在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 &gt; b else b, a

以上是关于在Python中计算两个不同数字中连续匹配元素的数量的主要内容,如果未能解决你的问题,请参考以下文章

【python】求数组中两个元素的最小距离?

python数组中怎样删除符合条件的元素

剑指offer数组中只出现一次的数

03K个数或第k个数算法

03K个数或第k个数算法

python 数组中两个数字之和怎么表达