精LintCode领扣算法问题答案:1890. 形成最小数
Posted 二当家的白帽子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精LintCode领扣算法问题答案:1890. 形成最小数相关的知识,希望对你有一定的参考价值。
1890. 形成最小数:
给定一个仅包含I和D的模式串str。 I代表相邻项增加,D代表相邻项减少。 设计一种算法,返回符合该模式且字典序最小的字符串。字符串只包含1到9且不能重复。
- 1 <= |str| <= 8
样例 1:
输入:
"D"
输出:
"21"
解释:
2>1
样例 2:
输入:
"II"
输出:
"123"
解释:
1<2<3
样例 3
输入:
"DIDI"
输出:
"21435"
样例 4
输入:
"DDIDDIID"
输出:
"321654798"
原题传送门
题解
public class Solution {
/**
* @param str: the pattern
* @return: the minimum number
*/
public String formMinimumNumber(String str) {
// Write your code here.
int n = str.length();
char[] ans = new char[n + 1];
char[] cs = str.toCharArray();
for (int i = 0, index = 0; i <= n; ++i) {
if (i == n
|| cs[i] == 'I') {
for (int j = i; j >= index; --j) {
ans[j] = (char) ('1' + index + i - j);
}
index = i + 1;
}
}
return new String(ans);
}
}
最后说两句
非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~
作者水平有限,如果文章内容有不准确的地方,请指正。
希望小伙伴们都能每天进步一点点。
本文由二当家的白帽子博客原创,转载请注明来源,谢谢~
以上是关于精LintCode领扣算法问题答案:1890. 形成最小数的主要内容,如果未能解决你的问题,请参考以下文章