深圳企业网站建设价格,网上怎么免费推广,个人主页网站开发背景,百元建站题意:所有子串中单个字符出现的次数和 问题转化:对于串中的每个字符,只包含其一次的所有子串的个数和 关于求只包含某位置字符一次的子串个数 class Solution {
public:int uniqueLetterString(string s) {/* ...A...A...A...*/int n s.size…
题意:所有子串中单个字符出现的次数和
问题转化:对于串中的每个字符,只包含其一次的所有子串的个数和
关于求只包含某位置字符一次的子串个数
classSolution{public:intuniqueLetterString(string s){/* ...A...A...A...*/int n = s.size();vector<int>alpha(26,-1);vector<int>leftBound(n,-1);// 记录每个位置的左端点for(int i =0; i < n; i++){leftBound[i]= alpha[s[i]-'A'];alpha[s[i]-'A']= i;}std::fill(alpha.begin(), alpha.end(), n);vector<int>rightBound(n, n);// 记录每个位置的右端点for(int i = n -1; i >=0; i--){rightBound[i]= alpha[s[i]-'A'];alpha[s[i]-'A']= i;}int ret =0;for(int i =0; i < n; i++){ret +=(i - leftBound[i])*(rightBound[i]- i);}return ret;}};