当前位置: 首页 > article >正文

leetcode_828_统计子串中的唯一字符

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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;
        
    }
};

http://www.kler.cn/a/145414.html

相关文章:

  • LLM评估优化与新技术创新综述
  • 【数据结构】_顺序表经典算法OJ(力扣版)
  • 人工智能能够进行逻辑推理码?
  • 【Redis】缓存+分布式锁
  • 运用python爬虫爬取汽车网站图片并下载,几个汽车网站的示例参考
  • 全志 视频输入组件的使用
  • 由于找不到vcruntime140.dll无法继续执行代码-提供5个修复方法分你对比
  • 快速去除Excel表格密码,轻松解锁保护,省时又省力
  • Python 安装django-cors-headers解决跨域问题
  • CVE-2023-27524:Apache Superset未授权访问漏洞复现
  • 香港站群服务器中1C/2C/4C/8C 的概念及区别
  • Kotlin学习——流程控制,when,循环,range工具 kt里的equals if实现类似三元表达式的效果
  • Centos Bind安装与排错
  • Vue + Element UI 实现复制当前行数据功能及解决复制到新增页面组件值不更新的问题
  • 【深度学习笔记】05 线性回归
  • 深度学习之基于YoloV5车辆和行人目标检测系统
  • 【深度学习笔记】01 数据操作与预处理
  • Windows TCP 通信测试_1
  • 如何在Ubuntu系统上安装MongoDB
  • 系列十七、各种各样的bean
  • 【Web】/proc利用相关例题wp
  • Flutter模板
  • 003、ArkTS开发实践
  • 【开源】基于Vue和SpringBoot的学校热点新闻推送系统
  • 关于嵌入式系统一些名词的小结(ARM/CORTEX/STM32等)
  • (离散数学)命题逻辑推理一:直接推理