字符串的 引力 定义为:字符串中 不同 字符的数量。
例如,“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;}
}