2262. 字符串的总引力

字符串的 引力 定义为:字符串中 不同 字符的数量。

例如,“abbca” 的引力为 3 ,因为其中有 3 个不同字符 ‘a’、‘b’ 和 ‘c’ 。
给你一个字符串 s ,返回 其所有子字符串的总引力 。

子字符串 定义为:字符串中的一个连续字符序列。


复杂度:O(N)
思路:在正序遍历数组的时候,使用map[26]记录每个字母最新出现的位置,tmp = tmp - map[i],规律比较难发现。

class Solution {
    public long appealSum(String s) {
        // ABBCA 
        // 用HashMap记录上一次字符出现的位置,
        int[] map = new int[26];
        Arrays.fill(map, -1);
        long ans = 0;
        int n = s.length();
        long tmp = 0;
        for(int i=0; i<n; i++) {
            char ch = s.charAt(i);
            tmp = tmp + i - map[ch-'a'];
            ans = ans + tmp;
            
            map[ch-'a'] = i;
        }
        return ans;
    }
}

你可能感兴趣的:(java,数据结构,算法)