为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼如林 2021-12-17 15:43:20
如果有两个字符串作为输入,我如何通过 * 删除任何字符串中的一个字符来检查它是否会与另一个字符串相同?所有输入都是英文字符。我尝试使用该Counter函数来查看是否可以执行任何操作,但这仅给出了相同字符的数量。from collections import Counterdef 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")
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

您可以使用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"))

输出:


False

False

False

True

True

演示在这里:https : //repl.it/@glhr/55369976


查看完整回答
反对 回复 2021-12-17
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

请尝试以下操作:


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 False


print(Equal_("a", "b"))

print(Equal_("a", "AA"))

print(Equal_("bb", "ba"))

print(Equal_("qwer", "qwxer"))

print(Equal_("qwe", "qe"))

输出:


False

False

False

True

True


查看完整回答
反对 回复 2021-12-17
  • 2 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号