本文 https://github.com/youngyangyang04/leetcode-master 已经收录,里面还有leetcode刷题攻略、各个类型经典题目刷题顺序、思维导图,可以fork到自己仓库,有空看一看一定会有所收获,如果对你有帮助也给一个star支持一下吧!

题目链接

https://leetcode-cn.com/problems/partition-labels/

思路

一想到分割字符串就想到了回溯,但本题其实不用那么复杂。

可以分为如下两步:

  • 统计每一个字符最后出现的位置
  • 从头遍历字符,如果找到之前字符最大出现位置下标和当前下标相等,则找到了分割点

如图:

明白原理之后,代码并不复杂,如下:

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

我是程序员Carl,利用工作之余重刷leetcode,更多精彩算法文章尽在:代码随想录,关注后,回复「Java」「C++」「python」「简历模板」等等,有我整理多年的学习资料,可以加我微信,备注「简单自我介绍」+「组队刷题」,拉你进入刷题群(无任何广告,纯个人分享),每天一道经典题目分析,我选的每一道题目都不是孤立的,而是由浅入深一脉相承的,如果跟住节奏每篇连续着看,定会融会贯通。

以下资料希望对你有帮助:

  • 学习资料以及我的开源项目
  • 我的B站视频:算法和编程语言的讲解
  • leetcode刷题攻略
  • 程序员应该如何写简历(附简历模板)
  • 一线互联网公司技术面试的流程以及注意事项
  • C++面试&C++学习指南知识点整理

如果感觉题解对你有帮助,不要吝啬给一个

「leetcode」763. 划分字母区间:【记录最远位置与双指针】详解相关推荐

  1. 力扣记录:贪心算法3较难(1)区间问题——55 跳跃游戏,45 跳跃游戏II,452 用最少数量的箭引爆气球,435 无重叠区间,763 划分字母区间,56 合并区间

    本次题目 55 跳跃游戏 45 跳跃游戏II 452 用最少数量的箭引爆气球 435 无重叠区间 763 划分字母区间 56 合并区间 55 跳跃游戏 局部最优:不管每次跳多少步,取最大跳跃步数,若覆 ...

  2. LeetCode 763. 划分字母区间

    文章目录 解法1:记录最大最小下标 解法2:贪心 https://leetcode-cn.com/problems/partition-labels/ 难度:中等   字符串 S 由小写字母组成.我们 ...

  3. leetcode 763. Partition Labels | 763. 划分字母区间(双指针)

    题目 https://leetcode.com/problems/partition-labels/ 题解 将问题转化成线段分割问题:找到所有可以切的点,使得每一个线段都不会被切到 class Sol ...

  4. 763. 划分字母区间009(贪心算法+思路+详解+图示)

    一:题目: 字符串 S 由小写字母组成.我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中.返回一个表示每个字符串片段的长度的列表. 示例: 输入:S = "ababcba ...

  5. 763 划分字母区间

    题目描述 字符串 S 由小写字母组成.我们要把这个字符串划分为尽可能多的片段,同一字母最多出现 在一个片段中.返回一个表示每个字符串片段的长度的列表. 题解 贪心策略 代码 class Solutio ...

  6. 763. 划分字母区间(JavaScript)

    var partitionLabels = function(s) {let arr=[] //保存结果let start=0let end=0let hash={}//遍历字符串,把下标保存for( ...

  7. 划分字母区间c语言,LeetCode(#763):划分字母区间

    一.前言 本题为LeetCode第763题,是一道 贪心算法 相关的算法题,难度中等. 本题链接:#763. 划分字母区间 二.题目 字符串S由小写字母组成.我们要把这个字符串划分为尽可能多的片段,同 ...

  8. Leetcode题763、划分字母区间(Python题解)

    同类问题: 跳跃游戏 跳跃游戏II 视频拼接 问题: 题目来源:力扣(LeetCode) leetcode763.划分字母区间 难度:中等 分析: 贪心 这道题的思路和跳跃游戏II基本一致. 首先我们 ...

  9. 划分字母区间(双指针,贪心)

    划分字母区间(双指针,贪心) 双指针 贪心 题目描述:字符串 S 由小写字母组成.我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中.返回一个表示每个字符串片段的长度的列表. 双指针 ...

  10. 神经网络学习小记录47——ShuffleNetV2模型的复现详解

    神经网络学习小记录47--ShuffleNetV2模型的复现详解 学习前言 什么是ShuffleNetV2 ShuffleNetV2 1.所用模块 2.网络整体结构 网络实现代码 学习前言 据说Shu ...

最新文章

  1. linux root权限_深入了解 Linux 权限
  2. python评语生成_如何评价生成模型框架 ZhuSuan?
  3. tox.ConfigError: ConfigError: substitution key 'posargs' not found
  4. 有效括号 python_python 有效的括号的实现代码示例
  5. mysql xtrabackup备份工具使用
  6. (8) ebj学习: Jpa的SINGLE_TABLE,JOINED,TABLE_PER_CLASS三种继承策略
  7. 高动态范围图像HDR
  8. 函数组:CSAP(BOM 相关)
  9. 微软MIX11大会第一天主旨以及新产品发布总结
  10. msvcrt python linux,Python msvcrt.CrtSetReportMode方法代码示例
  11. 在ubuntu16.04安装hadoop集群时ssh不成功
  12. linux查看本机IP掩码,linux下 取得本机ip、掩码、网关
  13. 360评估应用的6大场景
  14. doc文件转换为docx文件
  15. 获取当天日期的前一天或前几天,查询一天内的数据
  16. 计算机中及格人数怎么算,在excel中如何计算及格率和优秀率及统计各分数段人数...
  17. lcd timg的理解
  18. Nginx源码完全注释(4)ngx_queue.h / ngx_queue.c
  19. iOS https证书双向认证的实现机制
  20. JS中常见的字符串拼接处理

热门文章

  1. POJ 3237 Tree (树链拆分)
  2. 鸟哥-服务器 学习笔记
  3. python——语音信号读取、分帧、加窗
  4. 感知机原理及代码实现小结
  5. Docker使用Dockerfile创建Centos(tomcat+jdk)镜像
  6. centos7更改默认的python版本,安装python3.6.4
  7. Codeforces 490F Treeland Tour(离散化 + 线段树合并)
  8. 416. Partition Equal Subset Sum
  9. C++学习008-delete与delete[]的差别
  10. shell time 计算