每日一题,增减字符串匹配

Posted Roam-G

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题,增减字符串匹配相关的知识,希望对你有一定的参考价值。

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

示例 2:

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

示例 3:

输入:s = "DDI"
输出:[3,2,0,1]
class Solution:
    def diStringMatch(self,s:str)->List[int]:
        lo = 0
        hi = n = len(s)
        perm =[0]*(n+1)
        for i ,ch in enumerate(s):
            if ch =='I':
                perm[i] = lo
                lo+=1
            else:
                perm[i] = hi
                hi-=1
        perm[n] = lo 
        return perm
        

以上是关于每日一题,增减字符串匹配的主要内容,如果未能解决你的问题,请参考以下文章

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

1700. 增减字符串匹配

力扣——增减字符串匹配

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

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

开发技巧智能视频平台人脸识别如何利用GO time包实现时间增减