中等
给你两个长度相同的字符串 s 和 t ,以及两个整数数组 nextCost 和 previousCost 。
一次操作中,你可以选择 s 中的一个下标 i ,执行以下操作 之一 :
- 将
s[i]切换为字母表中的下一个字母,如果s[i] == 'z',切换后得到'a'。操作的代价为nextCost[j],其中j表示s[i]在字母表中的下标。 - 将
s[i]切换为字母表中的上一个字母,如果s[i] == 'a',切换后得到'z'。操作的代价为previousCost[j],其中j是s[i]在字母表中的下标。
切换距离 指的是将字符串 s 变为字符串 t 的 最少 操作代价总和。
请你返回从 s 到 t 的 切换距离 。
示例 1:
输入:s = "abab", t = "baba", nextCost = [100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], previousCost = [1,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
输出:2
解释:
- 选择下标
i = 0并将s[0]向前切换 25 次,总代价为 1 。 - 选择下标
i = 1并将s[1]向后切换 25 次,总代价为 0 。 - 选择下标
i = 2并将s[2]向前切换 25 次,总代价为 1 。 - 选择下标
i = 3并将s[3]向后切换 25 次,总代价为 0 。
示例 2:
输入:s = "leet", t = "code", nextCost = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], previousCost = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
输出:31
解释:
- 选择下标
i = 0并将s[0]向前切换 9 次,总代价为 9 。 - 选择下标
i = 1并将s[1]向后切换 10 次,总代价为 10 。 - 选择下标
i = 2并将s[2]向前切换 1 次,总代价为 1 。 - 选择下标
i = 3并将s[3]向后切换 11 次,总代价为 11 。
提示:
1 <= s.length == t.length <= 105s和t都只包含小写英文字母。nextCost.length == previousCost.length == 260 <= nextCost[i], previousCost[i] <= 109