当前位置:   article > 正文

力扣--贪心算法763.划分字母区间

力扣--贪心算法763.划分字母区间

思路分析

  1. 使用unordered_map记录每个字符在字符串中最后出现的位置,以便后续快速查找。
  2. 初始化指针end和start,分别表示当前分段的结束位置和起始位置。
  3. 遍历字符串,更新end的值,保证它始终表示当前分段的最远结束位置。
  4. 当遍历到当前分段的结束位置时,计算当前分段的长度,并将其加入结果向量,然后更新下一个分段的起始位置。
  5. 最终返回存储分段长度的结果向量。
  1. class Solution {
  2. public:
  3. // 定义成员函数partitionLabels,接受一个字符串s,返回一个整数向量
  4. vector<int> partitionLabels(string s) {
  5. // 获取字符串长度
  6. int n = s.size();
  7. // 使用unordered_map存储每个字符在字符串中最后出现的位置
  8. unordered_map<char, int> M;
  9. for (int i = 0; i < n; i++)
  10. M[s[i]] = i;
  11. // 初始化指针end和start,用于标记当前分段的结束位置和起始位置
  12. int end = 0, start = 0;
  13. // 用于存储分段长度的结果向量
  14. vector<int> result;
  15. // 遍历字符串
  16. for (int i = 0; i < n; i++) {
  17. // 更新当前分段的结束位置
  18. end = max(end, M[s[i]]);
  19. // 如果当前遍历到的位置等于当前分段的结束位置
  20. if (i == end) {
  21. // 计算当前分段的长度,并将其加入结果向量
  22. result.push_back(end - start + 1);
  23. // 更新下一个分段的起始位置
  24. start = i + 1;
  25. }
  26. }
  27. // 返回结果向量
  28. return result;
  29. }
  30. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/229600
推荐阅读
相关标签
  

闽ICP备14008679号