题解 | 小红的字符串修改

小红的字符串修改

https://www.nowcoder.com/practice/66e0054ff6b345afa47bcd4e8ceb72d7

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)

类似于指针,每次截取一段直接计算所有可能取最小值

全部评论

相关推荐

12-19 15:04
门头沟学院 Java
小肥罗:hr爱上你了,你负责吗哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务