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

相关推荐
小欣加油17 小时前
leetcode 1863 找出所有子集的异或总和再求和
c++·算法·leetcode·职场和发展·深度优先
拾忆,想起17 小时前
AMQP协议深度解析:消息队列背后的通信魔法
java·开发语言·spring boot·后端·spring cloud
林烈涛18 小时前
js判断变量是数组还是对象
开发语言·前端·javascript
可可南木18 小时前
ICT 数字测试原理 3 --SAFETYGUARD 文件
开发语言·测试工具·pcb工艺
00后程序员张18 小时前
从零构建 gRPC 跨语言通信:C++ 服务端与
开发语言·c++
Komorebi_999919 小时前
Unocss
开发语言·前端
爱凤的小光19 小时前
图漾相机C++语言---Sample_V1(4.X.X版本)完整参考例子(待完善)
开发语言·c++·数码相机
Derrick__120 小时前
Python常用三方模块——Pillow
开发语言·python·pillow
BlackQid20 小时前
深入理解指针Part1——C语言
c++·c
woshihonghonga21 小时前
【Ubuntu 20.04升级python3.9后终端打不开的bug】
linux·开发语言·python