【简单】942. 增减字符串匹配

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

【题目】
给定只含 “I”(增大)或 “D”(减小)的字符串 S ,令 N = S.length。
返回 [0, 1, …, N] 的任意排列 A 使得对于所有 i = 0, …, N-1,都有:
如果 S[i] == “I”,那么 A[i] < A[i+1]
如果 S[i] == “D”,那么 A[i] > A[i+1]
来源:leetcode
链接:https://leetcode-cn.com/problems/di-string-match/
【示例1】
输出:“IDID”
输出:[0,4,1,3,2]
【示例2】
输出:“III”
输出:[0,1,2,3]
【示例3】
输出:“DDI”
输出:[3,2,0,1]
【提示】
1 <= S.length <= 10000
S 只包含字符 “I” 或 “D”
【思路】
1、依旧是双指针,设置left、right指针,left=0,right=S.size();
2、从头到尾遍历S,遇到"I"的时候,将left压入结果集合,然后left++,遇到"D"的时候,将right压入结果集合,然后right–。字符串遍历完之后,结果集合有S.size()个数字,最后再将left或者right压入结果集即可。
【代码】

class Solution {
public:
    vector<int> diStringMatch(string S) {
        vector<int> rs;
        int left=0,right=S.size();
        for(auto x:S){
            if(x=='I'){
                rs.push_back(left);
                left++;
            }else{
                rs.push_back(right);
                right--;
            }
        }
        rs.push_back(left);
        return rs;
    }
};
Leetcode 942增减字符串匹配(超详细的解法!!!) 给定只含 "I"(增大)或 "D"(减小)的字符串 S ,令 N = S.length。 返回 [0, 1, ..., N] 的任意排列 A 使得对于所有 i = 0, ..., N-1,都有: 如果 S[i] == "I",那么 A[i] &lt; A[i+1] 如果 S[i] == "D",那么 A[i] &gt; A[i+1] 示例 1: 输出:"IDID" 输出:[0,4,1,3, 阅读详情

相关推荐

leetcode 算法题942 (简单248) 增减字符串匹配

leetcode 算法题942 (简单248) 增减字符串匹配 题目介绍 给定只含 "I"(增大)或 "D"(减小)的字符串 S , 令 N = S.length。 返回 [0, 1, ..., N] 的任意排列 A 使得对于所有 i = 0, ..., N-1,都有: 如果 S[...

FYuu95100的博客 227

【leetcode_942】【简单】di-string-match / 增减字符串匹配

贪心

过得精彩,无所谓好坏 382

【Python】【难度:简单】Leetcode 942. 增减字符串匹配

给定只含"I"(增大)或 "D"(减小)的字符串S,令N = S.length。 返回[0, 1, ..., N]的任意排列A使得对于所有i = 0,..., N-1,都有: 如果S[i] == "I",那么A[i] < A[i+1] 如果S[i] == "D",那么A[i] > A[i+1] 示例 1: 输出:"IDID" 输出:[0,4,1,...

thomashhs12的博客 183

942. 增减字符串匹配(简单字符串)(12.2.

给定只含 "I"(增大)或 "D"(减小)的字符串 S ,令 N = S.length。返回 [0, 1, ..., N] 的任意排列 A 使得对于所有 i =0, ..., N-1,都有: 如果 S[i] == "I",那么 A[i] &lt; A[i+1] 如果 S[i] == "D",那么 A[i] &gt; A[i+1] 示例 1: 输出:"IDID" 输出:[0,4,1,3,2

花小七 323

leetocde:942. 增减字符串匹配简单模拟 + 双指针】

分析 简单模拟 i和j从0和n往中间夹 如果碰到I就放i然后 i + 1 如果碰到D就放j然后 j - 1 ac code class Solution: def diStringMatch(self, s: str) -> List[int]: ans = [] i, j = 0, len(s) for c in s: if c == 'I': ans.append(i) .

小楼一夜听春雨 315

942. 增减字符串匹配

第五十天 ---942. 增减字符串匹配前言题目要求:整体思路具体代码 前言 博主最近考试了,没时间刷难题了,刷一下简单题练练手,哈哈哈 题目要求: 整体思路 观察样例,这里最大的是s.size(),最小的就是0,所以用一个变量记录即可,mins为最小,每次遇到I就入vector,之后自增,maxs为最大,每次遇到D就入vector,然后自减,最后一定要多出一位,来保证题目要求即可。 具体代码 注: 1、s.size()一定要提前算出来,要不然太慢了。 class Solution { public:

qq_45678698的博客 103

Greedy Algorithm EASY 21.11.07

LeetCode 贪心 两道简单题 21.11.07942. 增减字符串匹配解题思路代码实现1. Python实现2. Java实现976. 三角形的最大周长解题思路代码实现1. Python实现2. Java实现明日预告 942. 增减字符串匹配 942. 增减字符串匹配 解题思路 如果第一个是I,那么就给第一个安排最小值,这样后面的数一定是大于这个最小值的 如果第一个是D,那么就给第一个安排最大值,这样后面的数一定是小于这个最大值的 然后把选出来的数剔除,后面的步骤和思想和安排第一个数时相同

LittleFish0820 785

【LeetCode】942. DI String Match 增减字符串匹配

由范围 [0,n] 内所有整数组成的 n + 1 个整数的排列序列可以表示为长度为 n 的字符串 s ,其中: 如果perm[i] < perm[i + 1],那么s[i] == 'I' 如果perm[i] > perm[i + 1],那么 s[i] == 'D' 给定一个字符串 s ,重构排列perm 并返回它。如果有多个有效排列perm,则返回其中 任何一个 。

负雪明烛 2326

LeetCode 942 增减字符串匹配

low双指针 + 贪心策略:通过维护最小值和最大值指针,每次根据字符选择极值,确保每一步选择的最优性,最终线性时间内构造合法排列。

qq_64604732的博客 1144

LeetCode——942. 增减字符串匹配

942. 增减字符串匹配题目描述答案我的答案官方答案方法一:贪心 题目描述 由范围 [0,n] 内所有整数组成的 n + 1 个整数的排列序列可以表示为长度为 n 的字符串 s ,其中: 如果 perm[i] < perm[i + 1] ,那么 s[i] == 'I' 如果 perm[i] > perm[i + 1] ,那么 s[i] == 'D' 给定一个字符串 s ,重构排列 perm 并返回它。如果有多个有效排列perm,则返回其中 任何一个 。 示例 1: 输入:s = “IDI

允诺@晴天的博客 2567

leetcode 942. 增减字符串匹配

【题目】942. 增减字符串匹配 给定只含 “I”(增大)或 “D”(减小)的字符串 S ,令 N = S.length。 返回 [0, 1, …, N] 的任意排列 A 使得对于所有 i = 0, …, N-1,都有: 如果 S[i] == “I”,那么 A[i] < A[i+1] 如果 S[i] == “D”,那么 A[i] > A[i+1] 示例 1: 输出:"IDID" 输出:[0,4,1,3,2] 示例 2: 输出:"III" 输出:[0,1,2,3] 示例 3: 输出:"DDI"

Sophia_fez的博客 362

942. 增减字符串匹配(java)

942. 增减字符串匹配 给定只含 “I”(增大)或 “D”(减小)的字符串 S ,令 N = S.length。 返回 [0, 1, …, N] 的任意排列 A 使得对于所有 i = 0, …, N-1,都有: 如果 S[i] == “I”,那么 A[i] < A[i+1] 如果 S[i] == “D”,那么 A[i] > A[i+1] 示例 1: 输入:“IDID” 输出:[0,4,1,3,2] 示例 2: 输入:“III” 输出:[0,1,2,3] 示例 3: 输入:“DDI” 输出:[3

qq_45954445的博客 297

leetcode - 942 -增减字符串匹配 - java版

文章目录题目代码 题目 给定只含 “I”(增大)或 “D”(减小)的字符串 S ,令 N = S.length。 返回 [0, 1, …, N] 的任意排列 A 使得对于所有 i = 0, …, N-1,都有: 如果 S[i] == “I”,那么 A[i] < A[i+1] 如果 S[i] == “D”,那么 A[i] > A[i+1] 示例 1: 输出:“IDID” 输出:[0,4,...

lingle1的博客 404

LeetCode.942 增减字符串匹配

增减字符串匹配 题目链接 给定只含 “I”(增大)或 “D”(减小)的字符串 S ,令 N = S.length。 返回 [0, 1, …, N] 的任意排列 A 使得对于所有 i = 0, …, N-1,都有: 如果 S[i] == “I”,那么 A[i] &lt; A[i+1] 如果 S[i] == “D”,那么 A[i] &gt; A[i+1] 示例 1: 输出:“IDID” 输出:[...

码农在途的博客 383

LeetCode 942增减字符串匹配(贪心算法) —— 题解

贪心算法——增减字符串匹配

2601_96587588的博客 408
上一篇: 【简单】面试题 03.04. 化栈为队
下一篇: 【简单】面试题09. 用两个栈实现队列
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值