Given a pattern containing only I's and D's. I for increasing and D for decreasing.
Devise an algorithm to print the minimum number following that pattern.
Digits from 1-9 and digits can't repeat.
Example 1:
Input:
D
Output:
21
Explanation:
D is meant for decreasing,
So we choose the minimum number
among 21,31,54,87,etc.
Example 2:
Input:
IIDDD
Output:
126543
Explanation:
Above example is self- explanatory,
1 < 2 < 6 > 5 > 4 > 3
I - I - D - D - D
Solution: (Stack)
Approach:
Pop when there is I
Add in rest cases
// Some codeclasssolution{public:stringprintMinNumberForPattern(string s) { // code here stack<int> st; string res ="";for (int i =0; i <=s.length(); i++) {st.push(i +1);if (i ==s.length() ||s[i] =='I') {while (!st.empty()) {int k =st.top();st.pop(); res +=to_string(k); } } }return res; }};