leetcode_828_统计子串中的唯一字符

题意:所有子串中单个字符出现的次数和

问题转化:对于串中的每个字符,只包含其一次的所有子串的个数和

关于求只包含某位置字符一次的子串个数

cpp 复制代码
class Solution {
public:
    int uniqueLetterString(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;
        
    }
};
相关推荐
半问10 小时前
付费投流硬控互联网
人工智能·算法·互联网·推荐·流量
西岸行者10 小时前
学习Hammerstein-Wiener 模型,以及在回声消除场景中的应用
人工智能·学习·算法
机械电气电机杂谈10 小时前
电机功率因数深度解析:永磁同步电机的物理机制、控制策略与设计优化研究报告
职场和发展·创业创新·制造·学习方法·业界资讯
夏乌_Wx11 小时前
练题100天——DAY24:罗马数字转整数+环形链表+大小端判断
算法
youngee1111 小时前
hot100-48腐烂的橘子
算法
火火PM打怪中11 小时前
空窗期的自我探索
人工智能·职场和发展
liu****11 小时前
10.排序
c语言·开发语言·数据结构·c++·算法·排序算法
_OP_CHEN11 小时前
【算法基础篇】(三十二)动态规划之背包问题扩展:从多重到多维,解锁背包问题全场景
c++·算法·蓝桥杯·动态规划·背包问题·算法竞赛·acm/icpc
listhi52011 小时前
机械系统运动学与动力学在MATLAB及SimMechanics中的实现方案
人工智能·算法·matlab
fufu031111 小时前
Linux环境下的C语言编程(三十九)
c语言·数据结构·算法·链表