正如您所阐明的,您想通过 字符及其位置来查找两个字符串之间的差异,您可以执行以下操作:
- 逐一遍历您的列表。
- 对于列表中的每个单词,将其与提供的字符串逐个字符进行比较。
- 如果一个字符与另一个字符不匹配,则增加差异计数器。
- 如果差值大于所需差值,则返回
False,否则返回True。
- 请记住,比较的 2 个字符串可以有不同的长度。在计算它们时也要考虑到这一点。
片段:
def isSame(str_list,s,diff_offset):
s_len = len(s)
for each_s in str_list:
diff = abs(len(each_s) - s_len) # initialize with difference of string length
length = min(len(each_s),s_len)
for i in range(0,length):
if s[i] != each_s[i]:
diff = diff + 1
if diff > diff_offset:
return False # if difference is more than required, then return false
return True
print(isSame(["ccat","hpat","ppat"], "ppat", 2))
print(isSame(["ccat","hpat","ppatru"], "ppat", 2))
print(isSame(["ccat","hpat","that"], "ppat", 1))
更新:
根据问题陈述,如果长度不同,只需在开始逐个字符比较字符串之前返回 False。
def isSame(str_list,s,diff_offset):
s_len = len(s)
for each_s in str_list:
if len(each_s) != s_len:
return False
diff = 0
for i in range(0,s_len):
if s[i] != each_s[i]:
diff = diff + 1
if diff > diff_offset:
return False # if difference is more than required, then return false
return True
print(isSame(["ccat","hpat","ppat"], "ppat", 2))
print(isSame(["ccat","hpat","ppatru"], "ppat", 2))
print(isSame(["ccat","hpat","that"], "ppat", 1))