leetcode 763 未来跳跃游戏

这个题目挺抽象的,翻译成人话:

把字符串切成尽可能多的片段,满足一条铁律:

铁律(必须严格满足):同一个字母,只能出现在同一个片段里,绝对不能跨片段。

这个题目,我们先记录一下每个字母能到的最远位置,然后遍历,记录我们必须到达的最远位置,到了后就停。和跳跃游戏不同的是,由于我们已经能预知未来,所以直接和his_mx比就行,有所不同,多做多t体会~

cpp 复制代码
class Solution {
public:
    vector<int> partitionLabels(string s) {
        int n = s.size();
        vector<int> far(26, 0), ans;
        for(int i=0;i<n;i++)
        {
            far[s[i] - 'a'] = i;
        }

        int his_mx = 0, mx = -1;
        for(int i=0;i<n;i++)
        {
            his_mx = max(far[s[i]-'a'], his_mx);

            if(i == his_mx)
            {
                ans.push_back(his_mx-mx);
                mx = his_mx;
            }
        }

        return ans;
    }
};
相关推荐
稚南城才子,乌衣巷风流2 小时前
ST 表(Sparse Table)算法详解:原理、实现与应用
算法
hold?fish:palm2 小时前
9 找到字符串中所有字母异位词
c++·算法·leetcode
Sw1zzle2 小时前
算法入门(六):贪心算法 - 基础入门(Leetcode 121/455/860/376/738)
算法·leetcode·贪心算法
青山木2 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
不会就选b2 小时前
算法日常・每日刷题--<归并排序>1
数据结构·算法
危桥带雨3 小时前
排序算法(快排、归并、计数、基数排序)
数据结构·算法·排序算法
啦啦啦啦啦zzzz3 小时前
算法:回溯算法
c++·算法·leetcode
IT探索3 小时前
Linux 查找文件指令总结
linux·算法
攻城狮Soar3 小时前
C++子类访问父类成员
c++·算法