LeetCode 942 DI String Match 解题报告

Posted yao1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 942 DI String Match 解题报告相关的知识,希望对你有一定的参考价值。

题目要求

Given a string S that only contains "I" (increase) or "D" (decrease), let N = S.length.

Return any permutation A of [0, 1, ..., N] such that for all i = 0, ..., N-1:

  • If S[i] == "I", then A[i] < A[i+1]
  • If S[i] == "D",then A[i] > A[i+1]

题目分析及思路

题目给出一个只包含I或D的字符串,要求返回一个序列,序列长度为字符串长度N+1。当字母为I,则序列的对应位置比后面位置的值要大;若字母为D,则相反。我们可以使第一个出现I的位置对应的是0,第一个D出现的位置对应的是N,那么无论这个位置后面出现的是另外的哪个数字,当前的位置都能满足题设条件。我们每次遇见I都比之前的I增加1,每次遇到D都比之前的D减小1。这样会尽可能的给后面的数字让出空间。

python代码?

class Solution:

    def diStringMatch(self, S):

        """

        :type S: str

        :rtype: List[int]

        """

        N = len(S)

        min,max = 0,N

        res = list()

        for s in S:

            if s == ‘I‘:

                res.append(min)

                min = min + 1

            if s == ‘D‘:

                res.append(max)

                max = max - 1

        res.append(min)

        return res

                

        

        

 

以上是关于LeetCode 942 DI String Match 解题报告的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode] 942. DI String Match 增减DI字符串匹配

LeetCode 942 DI String Match 解题报告

LeetCode 五月打卡-day09

LeetCode 942 增减字符串匹配[贪心 双指针] HERODING的LeetCode之路

LeetCode 942. 增减字符串匹配 / 1728. 猫和老鼠 II(博弈,不会) / 449. 序列化和反序列化二叉搜索树

leetcode刷题四十七