连云港市建设工程安全监督站网站,天津高端网站建设,百度收录网址,手机网站开发模拟手机题意#xff1a;所有子串中单个字符出现的次数和 问题转化#xff1a;对于串中的每个字符#xff0c;只包含其一次的所有子串的个数和 关于求只包含某位置字符一次的子串个数 class Solution {
public:int uniqueLetterString(string s) {/* ...A...A...A...*/int n s.size…题意所有子串中单个字符出现的次数和 问题转化对于串中的每个字符只包含其一次的所有子串的个数和 关于求只包含某位置字符一次的子串个数 class Solution {
public:int uniqueLetterString(string s) {/* ...A...A...A...*/int n s.size();vectorint alpha(26, -1);vectorint 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);vectorint 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;}
};