繁体   English   中英

计算python中两个字符串之间的常见字符

[英]Counting common characters between two strings in python

我有一个我一直在处理的代码,但它的输出没有我需要的那么好。 我必须为 python 中的代码编写自己的算法来计算输入字符串中的字符数。 它就像针头方法中的大海捞针,但我不应该使用任何文本比较方法,例如 count() 和 findall()。 我希望我的代码逐个字符地计算并且不计算重叠的字母。 我正在寻找最长的公共子串。 到目前为止,这是我的代码,但输出仍然错误。 当我在 String1 字段中键入“aaaaa”和在 String 2 字段中键入“aa”时,它输出 1,但它应该输出 2,因为“aaaaa”中有 2 个“aa”没有重叠。

    test1 = input("String1: ")
    test2 = input("String2: ")

    common = {}
    if len(test1)<len(test2):
    for letter in test1:
        if letter in test2:
            common[letter]= 1

    else:
    for letter in test2:
        if letter in test1:
            common[letter]= 1
    print (len(common))

因此,您的代码的问题之一是您计算字符出现次数的方式,如果您执行“aaaa”和“aa”,则像您所说的那样输出为 2,但在您当前的代码中,无论如何它将为 1。 这是修复。

import re
test1 = input("String1: ")
test2 = input("String2: ")

common = {}
if len(test1) < len(test2):
     for letter in test1:
         if letter in test2:
             common[letter] = len(re.findall(letter, test2))

else:
     for letter in test2:
         if letter in test1:
             common[letter] = len(re.findall(letter, test1))
for word, count in common.items():
    print("{0}\t{1}".format(word,count))
str1=input()
str2=input()

cnt=0
if len(str1)<len(str2):
    for i in str1:
       if i in str2:
           cnt+=1
else:
    for i in str2:
        if i in str1:
            cnt+=1
print(cnt)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM