如果有两个字符串作为输入,我该如何通过*仅删除任何一个字符串中的一个字符来检查它是否与另一个字符串相同?所有输入均为英文字符。
我尝试使用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")
答案 0 :(得分:1)
您可以使用ndiff
模块中的difflib
列出两个字符串之间的差异:
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
答案 1 :(得分:0)
尝试以下操作:
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