s1 = input()
s2 = input()
l1, l2 = len(s1), len(s2)
# 初始化一个很大的数
min_times = 1e6
# 转为ASCII码列表,便于计算
s1_num = [ord(i) for i in s1]
s2_num = [ord(i) for i in s2]
for i in range(l2):
# 条件判断,防止下标越界
if i + l1 <= l2:
times = 0
for j, n in enumerate(s1_num):
# 两个方向计算最小转换步数
times += min(abs(s2_num[i + j] - s1_num[j]), 26-abs(s2_num[i + j] - s1_num[j]))
min_times = min(min_times, times)
else:
break
print(min_times)
类似于指针,每次截取一段直接计算所有可能取最小值

京公网安备 11010502036488号