Python 比较两个字符串以查看是否有一个字符的差异
如果有两个字符串作为输入,我如何通过*删除任何字符串中的一个字符来检查它是否与另一个字符串相同?所有输入均为英文字符Python 比较两个字符串以查看是否有一个字符的差异,python,string,Python,String,如果有两个字符串作为输入,我如何通过*删除任何字符串中的一个字符来检查它是否与另一个字符串相同?所有输入均为英文字符 from collections import Counter def Equal_(s1, s2): Number = sum((Counter(s1) & Counter(s2)).values()) return Number 我曾尝试使用计数器函数来查看是否可以执行任何操作,但这只提供了相同的字符数 from collections import Cou
from collections import Counter
def Equal_(s1, s2):
Number = sum((Counter(s1) & Counter(s2)).values())
return Number
我曾尝试使用计数器函数来查看是否可以执行任何操作,但这只提供了相同的字符数
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")
Equal_("qwer", "qwxer")
Equal_("qwe", "qe")
这些应该是正确的
:
Equal_("a", "b")
Equal_("a", "AA")
Equal_("bb", "ba")
Equal_("qwer", "qwxer")
Equal_("qwe", "qe")
您可以使用difflib
模块中的ndiff
列出两个字符串之间的差异:
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
此处演示:尝试以下操作:
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
如果通过替换a->b
我得到b
,为什么这个相等?与相等(“bb”,“ba”)
相同。问题描述非常模糊。您说“更改一个字符”,但示例实际上添加或删除了一个字符。此外,您还没有指定字符顺序是否重要。我更改了描述,对此表示抱歉。根据您的推理,您可能会发现此链接具有教育意义:它是一个拼写检查器(通过一个字符检测关闭等情况)以简洁易懂的方式完成。很好地使用了ndiff
+1。但是,您在哪里使用case_a
和case_b
?在大O表示法中时间复杂度是多少