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

763. 划分字母区间

题目:给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。

本题我想到了去找当前子字符串出现字母的最远边界,但没有想出来如何去寻找。通过遍历整个字符串,找到之前遍历的所有字母的最远边界处,也就是分割点。

具体步骤如下:
(1)统计每一个字符最后出现的位置(使用一个数组进行统计)
(2)从头遍历字符,并更新字符的最远出现下标,如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点
在这里插入图片描述
代码如下:

class Solution {
public:vector<int> partitionLabels(string S) {int hash[27] = {0}; // i为字符,hash[i]为字符出现的最后位置for (int i = 0; i < S.size(); i++) { // 统计每一个字符最后出现的位置hash[S[i] - 'a'] = i;}vector<int> result;int left = 0;int right = 0;for (int i = 0; i < S.size(); i++) {right = max(right, hash[S[i] - 'a']); // 找到字符出现的最远边界if (i == right) {result.push_back(right - left + 1);left = i + 1;}}return result;}
};
http://www.lryc.cn/news/381818.html

相关文章:

  • 【PostgreSQL】AUTO_EXPLAIN - 慢速查询的日志执行计划
  • 讯飞星火超自然语言合成的完整Demo
  • 封装一个上拉加载的组件(无限滚动)
  • WHAT - 高性能和内存安全的 Rust(二)
  • 办理河南建筑工程乙级设计资质的流程与要点
  • 分类算法和回归算法区别
  • 利用Frp实现内网穿透(docker实现)
  • 怎么用Excel生成标签打印模板,自动生成二维码
  • java基于ssm+jsp 美食推荐管理系统
  • 数据分析:置换检验Permutation Test
  • 【React】使用Token做路由权限控制
  • 机器学习周记(第四十四周:Robformer)2024.6.17~2024.6.23
  • JAVA学习笔记DAY10——SpringBoot基础
  • 如何在Android中实现多线程与线程池?
  • SCI绘图【1】-不同颜色表示密度和差异--密度图
  • C语言 while循环1
  • [C++][数据结构][LRU Cache]详细讲解
  • 怎样激励员工积极应用新版FMEA培训后的知识?
  • WDF驱动开发-WDF总线枚举(一)
  • React useEffect 执行时机
  • centos7 根目录扩容
  • 为什么要做Redis分区和分片
  • 电脑不小心删除的文件怎么恢复?4个必备恢复方法!
  • GPTCache:革新大模型缓存,降低成本,提升效率
  • [Day 15] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • 绘唐3下载地址
  • 两个基因相关性细胞系(CCLE)(升级)
  • 2024全国各地高考录取分数线一览表(含一本、二本、专科)
  • 汇编快速入门
  • Apache Tomcat 10.1.25 新版本发布 java 应用服务器