比较两个字符串,看是否有一个字符差异

如果有两个字符串作为输入,我如何通过 * 删除任何字符串中的一个字符来检查它是否会与另一个字符串相同?所有输入都是英文字符。


我尝试使用该Counter函数来查看是否可以执行任何操作,但这仅给出了相同字符的数量。


from collections import Counter

def Equal_(s1, s2):

    Number = sum((Counter(s1) & Counter(s2)).values())

return Number

这些应该是False:


Equal_("a", "b")

Equal_("a", "AA")

Equal_("bb", "ba")

这些应该是True:


Equal_("qwer", "qwxer")

Equal_("qwe", "qe")


呼如林
浏览 225回答 2
2回答

倚天杖

您可以使用ndifffromdifflib模块列出两个字符串之间的差异:def compareStrings(a, b):    diff_list = [li for li in difflib.ndiff(a, b) if li[0] != ' ']    if(len(diff_list) == 1):        return True    return False用你的例子:print(compareStrings("a", "b"))print(compareStrings("a", "AA"))print(compareStrings("bb", "ba"))print(compareStrings("qwer", "qwxer"))print(compareStrings("qwe", "qe"))输出:FalseFalseFalseTrueTrue演示在这里:https : //repl.it/@glhr/55369976

翻翻过去那场雪

请尝试以下操作:def Equal_(s1, s2):    for i in range(0,len(s1)):        if s1[0:i] + s1[i+1:] == s2:            return True    for i in range(0,len(s2)):        if s2[0:i] + s2[i+1:] == s1:            return True    return Falseprint(Equal_("a", "b"))print(Equal_("a", "AA"))print(Equal_("bb", "ba"))print(Equal_("qwer", "qwxer"))print(Equal_("qwe", "qe"))输出:FalseFalseFalseTrueTrue
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python