假设一个字符在字符串中连续出现的三次位置分别为 i、j、k,那么,位置 j 处的这个字符对结果的贡献次数为 (j -i) * (k - j)
,比如,ABACA
,中间这个 A 的贡献次数 2 * 2 = 4,分别为 BA、A、AC、BAC,所以,我们只需要一个数组记录每个字符前两次出现的位置即可。
注意,边界的处理,像上述示例中第一个 A 的贡献为 1 * 2 = 2,分别为 A、AB,同理,最后的 A 也是一样的。
class Solution {
public int uniqueLetterString(String s