【c++】leetcode763 划分字母区间

1.题目

题目分析:

①同一个字符只能出现在一个片段中

②划分成尽可能多的片段

2.code

思路:

①先把所有出现过的字符个数进行统计

②通过滑窗与快慢指针以及一个valid==windows.size()说明目前为止(fast)出现过的字符都已经全部出现过了,即不在其他的片段中

cpp 复制代码
class Solution {
public:
    vector<int> partitionLabels(string s) {
        unordered_map<char, int> t, window;
        std::vector<int> res{};
        int slow = 0, fast = 0, valid = 0;
        for (auto i = 0; i < s.length(); i++)
        {
            if (t.count(s[i]) == 0) t[s[i]] = 0;
            t[s[i]]++;
        }
        
        while (fast < s.length())
        {
            if (t.count(s[fast]))
            {
                window[s[fast]]++;
                if (window[s[fast]] == t[s[fast]]) valid++;
            }
            if (valid == window.size())
            {
                if (fast - slow < s.length())
                {
                    res.push_back(fast - slow + 1);
                    slow = fast + 1;
                }
            }
            fast++;
        }
        return res;
    }
};

截止到2025.7.30日,所有的case可以AC。

相关推荐
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧5 小时前
C++学习:基础知识的掌握
c++·visualstudio
wuyk5555 小时前
第2章:六步换相原理全解+STM32工程实战
c语言·开发语言·stm32·单片机·嵌入式硬件
hey_sml5 小时前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
萧瑟余晖7 小时前
Java深入解析篇十七之SpringCloud
java·开发语言
ttod_qzstudio8 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
萧瑟余晖9 小时前
Java深入解析篇十七之Spring Security
java·开发语言·spring
C++ 老炮儿的技术栈11 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
new_zhou11 小时前
C++ 项目 AI 协作指南(Windows / MSVC 环境)
c++·人工智能·windows
二十雨辰11 小时前
[Java]-Spring面试题
java·开发语言
_oP_i12 小时前
python 后缀 mjs文件
开发语言·python