📅  最后修改于: 2023-12-03 15:41:16.702000             🧑  作者: Mango
在字符串处理中,有一个常见的需求是计算相同字符出现之间的距离总和。比如说,对于字符串 "abca",相同字符 "a" 出现的位置分别为 0 和 3,它们之间的距离为 3,而相同字符 "b" 出现在位置 1,因此它与相同字符 "a" 之间的距离为 1。因此,相同字符出现之间的距离总和为 3 + 1 = 4。
本文将介绍一种基于哈希表的算法来计算相同字符出现之间所有距离的总和。
def total_distance(s: str) -> int:
pos = {}
dist = 0
for i, c in enumerate(s):
if c in pos:
dist += i - pos[c]
pos[c] = i
return dist
>>> total_distance("abca")
4
>>> total_distance("abcba")
5
>>> total_distance("abccba")
6