如何计算将一个字符串更改为另一个字符串所需的次数?

2024-06-28 15:24:14 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有两个字符串:

String1 = "ABBABBAA"
String2 = "ABBAABBB"

我想把String2变成String1。我一次只能更改一个字符串。我的目标是计算将string2更改为string1所需的次数

还请注意,如果需要更改的两个字符相邻,则将其计为1。我的意思是:

string1 = "GHGGH"
string2 = "HGGGH"

如您所见,我只需要更改string2中的字符1和2。因为角色1和角色2相邻,所以我会将其计算为一圈。所以答案是1

现在,我将向您展示如何从顶部的示例将string2转换为string1:

String1 = "ABBABBAA"
String2 = "ABBAABBB"

在本例中,您需要更改String2中的字符串5以及字符串7和8。输出为2,因为一圈来自5,第二圈来自7和8,因为它们相邻

Output:
>> 2

(另外,我对堆栈溢出有点陌生,所以如果我的问题格式不好,请原谅。)


Tags: 字符串答案角色目标字符次数我会string1
2条回答

您可以使用:

from itertools import groupby

sum(1 if k1 != k2 or len(list(v1)) != len(list(v2)) else 0
     for (k1, v1), (k2, v2) in zip(groupby(String1), groupby(String2)))

也许可以通过某种方式对其进行优化,但您必须检查每个位置的每个字符串,并确认之前的位置是否不同

def compare(a, b):
  i=0
  prev_diff=0
  for x, y in zip(a, b):
    if x != y and prev_diff==0:
        prev_diff=1
        i += 1
    elif x!=y and prev_diff==1:
        prev_diff=1
    else:
        prev_diff=0
  print(i)
compare(String1,String2)
Out: 2

相关问题 更多 >