美文网首页
【算法题】2375. 根据模式串构造最小数字

【算法题】2375. 根据模式串构造最小数字

作者: 程序员小2 | 来源:发表于2023-05-25 07:49 被阅读0次

题目:

给你下标从 0 开始、长度为 n 的字符串 pattern ,它包含两种字符,'I' 表示 上升 ,'D' 表示 下降 。

你需要构造一个下标从 0 开始长度为 n + 1 的字符串,且它要满足以下条件:

num 包含数字 '1' 到 '9' ,其中每个数字 至多 使用一次。
如果 pattern[i] == 'I' ,那么 num[i] < num[i + 1] 。
如果 pattern[i] == 'D' ,那么 num[i] > num[i + 1] 。
请你返回满足上述条件字典序 最小 的字符串 num。

示例 1:

输入:pattern = "IIIDIDDD"
输出:"123549876"
解释:
下标 0 ,1 ,2 和 4 处,我们需要使 num[i] < num[i+1] 。
下标 3 ,5 ,6 和 7 处,我们需要使 num[i] > num[i+1] 。
一些可能的 num 的值为 "245639871" ,"135749862" 和 "123849765" 。
"123549876" 是满足条件最小的数字。
注意,"123414321" 不是可行解因为数字 '1' 使用次数超过 1 次。
示例 2:

输入:pattern = "DDD"
输出:"4321"
解释:
一些可能的 num 的值为 "9876" ,"7321" 和 "8742" 。
"4321" 是满足条件最小的数字。

提示:

1 <= pattern.length <= 8
pattern 只包含字符 'I' 和 'D' 。

java代码:

class Solution {
    public String smallestNumber(String pattern) {
        int i = 0, n = pattern.length();
        var cur = '1';
        var ans = new char[n + 1];
        while (i < n) {
            if (i > 0 && pattern.charAt(i) == 'I') ++i;
            for (; i < n && pattern.charAt(i) == 'I'; ++i) ans[i] = cur++;
            var i0 = i;
            while (i < n && pattern.charAt(i) == 'D') ++i;
            for (var j = i; j >= i0; --j) ans[j] = cur++;
        }
        return new String(ans);
    }
}

相关文章

  • LeetCode题解之上升下降字符串

    上升下降字符串 题目描述 给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,...

  • LeetCode-1370-上升下降字符串

    给你一个字符串 s ,请你根据下面的算法重新构造字符串:从 s 中选出 最小 的字符,将它 接在 结果字符串的后面...

  • 1370. 上升下降字符串

    题目:给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,将它 接在 结果字符...

  • LeetCode 1370. 上升下降字符串

    题目 给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,将它 接在 结果字符...

  • Leetcode 1370 题 上升下降字符串

    题目描述 给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出最小的字符,将它接在结果字符串的...

  • KMP算法python实现

    KMP算法是一种字符串匹配算法,也就是在字符串t找到与字符串p相等的子串,这个算法的核心是根据字符串p构造一个状态...

  • 小争哥算法题打卡记录

    第十周算法题 1、437. 路径总和 III 2、| 889. 根据前序和后序遍历构造二叉树[https://le...

  • AC自动机

    字符串匹配算法 单模式串匹配算法 是在一个模式串和一个主串之间进行匹配,也就是说,在一个主串中查找一个模式串。 多...

  • KMP 算法实现脏话屏蔽功能(Go 语言版)

    先上代码: KMP 算法的核心思想和 BM 算法非常相近,假设主串是 a,模式串是 b。在模式串与主串匹配的过程中...

  • 一些有关算法的

    字符串模式匹配算法 字符串的KMP算法详解部分匹配表(即)向右移一位就可以得到next数组。字符串模式匹配算法 R...

网友评论

      本文标题:【算法题】2375. 根据模式串构造最小数字

      本文链接:https://www.haomeiwen.com/subject/cxxhedtx.html