【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。

相关推荐
blasit6 小时前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
肆忆_1 天前
# 用 5 个问题学懂 C++ 虚函数(入门级)
c++
不想写代码的星星1 天前
虚函数表:C++ 多态背后的那个男人
c++
端平入洛3 天前
delete又未完全delete
c++
端平入洛4 天前
auto有时不auto
c++
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1235 天前
matlab画图工具
开发语言·matlab
dustcell.5 天前
haproxy七层代理
java·开发语言·前端
norlan_jame5 天前
C-PHY与D-PHY差异
c语言·开发语言
哇哈哈20215 天前
信号量和信号
linux·c++