|
|
发表于 2023-4-29 11:34:13
|
显示全部楼层
本楼为最佳答案
- def is_one_char_diff(str1, str2):
- if len(str1) == len(str2):
- count_diff = 0
- for i in range(len(str1)):
- if str1[i] != str2[i]:
- count_diff += 1
- if count_diff > 1:
- return False
- return count_diff == 1
- elif abs(len(str1) - len(str2)) == 1:
- if len(str1) > len(str2):
- str1, str2 = str2, str1
- i = j = 0
- while i < len(str1) and j < len(str2):
- if str1[i] != str2[j]:
- j += 1
- if j - i > 1:
- return False
- else:
- i += 1
- j += 1
- return True
- else:
- return False
复制代码
这个函数可以判断两个字符串是否只有一个字符的差别。首先判断两个字符串长度是否相等,如果相等,则统计不同的字符数,如果不同的字符数为1,则返回True;否则返回False。如果两个字符串长度相差1,则将较短的字符串作为str1,从左到右遍历两个字符串,遇到不同的字符则将较长字符串的指针j后移一位,如果j和i之间的距离大于1,则返回False;否则继续遍历,直到遍历完较短的字符串,如果都没有返回False,则返回True。如果两个字符串长度差别大于1,则直接返回False。 |
|