栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > C/C++/C#

Leetcode:diStringMatch增减字符串匹配

C/C++/C# 更新时间:发布时间: 百科书网 趣学号

题目:

由范围 [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 = "IDID"
输出:[0,4,1,3,2]

示例 2:

输入:s = "III"
输出:[0,1,2,3]

思路:

如果是“ I ”说明第一个数到第二个数是增加 那最好的办法就是 、

第一个数放最小的数 min(为0) min++

如果是“ D ”说明第一个数到第二个数是减少 那最好的办法就是

第一个数放最大的数 max(为n-1) max--

代码:

class Solution {
public:
    vector diStringMatch(string s) {
        int n = s.size();
        vector nums(n + 1);
        int min = 0;
        int max = s.size();
        for(int i = 0; i < n; i++)
        {
            if(s[i] == 'I')
            {
                nums[i] = min++;
            }
            else
            {
                nums[i] = max--;
            }
        }
        if(s[n - 1] == 'D')
        {
            nums[n] = max--;
        }
        else{
            nums[n] = min++;
        }
        return nums;
    }
};

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/869683.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号