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

力扣 hot100 Day72

763. 划分字母区间

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串 "ababcc" 能够被分为 ["abab", "cc"],但类似 ["aba", "bcc"] 或 ["ab", "ab", "cc"] 的划分是非法的。

注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。

返回一个表示每个字符串片段的长度的列表。

class Solution {
public:vector<int> partitionLabels(string s) {unordered_map <char,int> record;for(int i =0;i<s.length();i++){if(i>record[i]){record[s[i]]=i;}}vector<int>result;int start = 0;int maxn=0;for(int i=0;i<s.length();i++){maxn=max(maxn,record[s[i]]);if(i == maxn) {result.push_back(i - start + 1);start = i + 1;}}return result;}
};

第一次循环,先记录每个字母最后的位置,存在哈希表中。

第二次循环,维护一个区间,记录区间中所有字母最后位置的最大值,当i等于这个最大值时,就可以推入结果容器了。

核心目标就是,确保每个区间所有元素的末位置都包含在区间内

http://www.lryc.cn/news/620333.html

相关文章:

  • 深入理解 Cookie 与 Session —— Web 状态保持详解与实战
  • SpringBoot 整合 Langchain4j 系统提示词与用户提示词实战详解
  • JavaWeb(05)
  • TCP客户端Linux网络编程设计详解
  • 人工智能——CNN基础:卷积和池化
  • HiSmartPerf使用WIFI方式连接Android机显示当前设备0.0.0.0无法ping通!设备和电脑连接同一网络,将设备保持亮屏重新尝试
  • SAP Valuation Category在制造业成本核算中的使用场景与配置方案
  • 基于C语言基础对C++的进一步学习_C和C++编程范式、C与C++对比的一些补充知识、C++中的命名空间、文件分层
  • window显示驱动开发—多平面覆盖 VidPN 呈现
  • 看懂 Linux 硬件信息查看与故障排查
  • 力扣42:接雨水
  • 人工智能入门①:AI基础知识(上)
  • Python图像处理基础(十三)
  • 《工程封装》(Python)
  • 网络安全合规6--服务器安全检测和防御技术
  • 3.Ansible编写和运行playbook
  • 3DM游戏运行库合集离线安装包下载, msvcp140.dll丢失等问题修复
  • ESP32_STM32_DHT20
  • 三极管的基极为什么需要下拉电阻
  • Vue3从入门到精通:4.1 Vue Router 4深度解析与实战应用
  • vue实现模拟 ai 对话功能
  • JS的学习5
  • vue修改element的css属性
  • 决策树回归:用“分而治之”的智慧,搞定非线性回归难题(附3D可视化)
  • 北京JAVA基础面试30天打卡09
  • uniapp授权登录
  • 硬件工程师八月实战项目分享
  • 8.13迎来联动:PUBG布加迪,新版本37.1内容资讯!低配置也能飙车吃鸡!
  • 谈一些iOS组件化相关的东西
  • 【Golang】 Context.WithCancel 全面解析与实战指南