周賽 397。

題目

輸入兩個字串 s, t。每個字元在 s 中最多出現一次,且 t 是 s 的排列

排列差指的是所有字元分別在 s 和 t 出現的索引位置絕對差的加總。

求 s 和 t 的排列差。

解法

s 中每個字元 c 只會出現一次,也保證只會在 t 出現一次。
先遍歷 s 並記錄各字元 c 的索引位置,然後再遍歷 t,將兩個索引差加入答案。

時間複雜度 O(N)。
空間複雜度 O(N)。

class Solution:
    def findPermutationDifference(self, s: str, t: str) -> int:
        d = {c:i for i, c in enumerate(s)}
        ans = 0 
        for i, c in enumerate(t):
            ans += abs(i - d[c])
            
        return ans