比较两个字符串相同的部分以及错位的部分

有两个长度一样的字符串,输出这两个字符串中位置相同且字母相同的数量a以及字母相同但位置不同的数量b,注意排除那些位置正确的字母。比如“answers”和“peelers”,最后三个字母都是“ers”所以a=3,“peel”和“answ”中没有相同的字母,所以b=0。“abcda”和“baaab”中a=0,两个a和一个b的位置错误了所以b=3。
以下有更多例子
“failed”,“banana”
a=1,b=0
“answers”,“bananas”
a=1,b=2
“answers”,“startle”
a=0,b=4
“answers”,“andoras”
a=3,b=1

写了一个,不过楼上的更简便,这个供参考


string1 = 'abcdefg'
string2 = 'mncfgh'
a = 0
b = 0
dic_a = {}
dic_b = {}
### 比较相同位置的字符
for i in range(min(len(string1),len(string2))):
    if(string1[i] == string2[i]):
        print(string1[i])
        a += 1
print(a)


### 比较不同位置的字符
print(string1,string2)

    ### 分别把string1和string2 存到两个字典中
keya = dic_a.keys()
keyb = dic_b.keys()

for key in string1:
    print(key)
    if key not in keya:
        dic_a[key] = 1
    else:
        dic_a[key] += 1
for key in string2:
    if key not in keyb:
        dic_b[key] = 1
    else:
        dic_b[key] += 1

    ### 比较字典,取key值相同时候的小值
if len(keya) > len(keyb):
    key0 = keyb
else:
    key0 = keya
    
for k in key0:
    if(k in keya and k in keyb):
        b = b + min(dic_a[k],dic_b[k])
print(b)

循环两个字符串比较各个字符即可
你题目的解答代码如下:

s1 = input("请输入第一个字符串:")
s2 = input("请输入第二个字符串:")
li1 = []
li2 = []
a = 0
b = 0
for c1,c2 in zip(s1,s2):
    if c1==c2:
        a += 1
    else:
        li1.append(c1)
        li2.append(c2)
for v in li1:
    if v in li2:
        b += 1
        li2.remove(v)

print(f'a={a},b={b}')

img

如有帮助,望采纳!谢谢!