Leetcode3146. 两个字符串的排列差

题目描述:

给你两个字符串 s 和 t,每个字符串中的字符都不重复,且 t 是 s 的一个排列。

排列差 定义为 s 和 t 中每个字符在两个字符串中位置的绝对差值之和。

返回 s 和 t 之间的 排列差 

代码思路:

  1. 建立字符位置映射
    • 对于字符串 s 中的每个字符,记录它在字符串中的位置。
    • 对于字符串 t 中的每个字符,同样记录它在字符串中的位置。
  2. 计算排列差
    • 遍历字符串 s 中的每个字符(由于 t 是 s 的排列,所以字符集是相同的),计算每个字符在两个字符串中位置的绝对差值。
    • 将所有字符的绝对差值累加,得到最终的排列差。

代码实现:

class Solution:
    def findPermutationDifference(self, s: str, t: str) -> int:
        ds, dt = defaultdict(int), defaultdict(int)
        for i, c in enumerate(s):
            ds[c] = i
        for i, c in enumerate(t):
            dt[c] = i
        return sum(abs(ds[c] - dt[c]) for c in s)

 

你可能感兴趣的:(算法,python3,leetcode,哈希表)