Untitled
unknown
plain_text
3 years ago
1.6 kB
12
Indexable
class Solution {
int getPossibleSeq(int nextAvailable, int countI, int countD, string &result, bool &isFirst){
string resultI = "";
string resultD = "";
if(!isFirst)countI--;
for(int i = 0; i < countI; i++){
resultI += to_string(nextAvailable);
nextAvailable++;
}
for(int i = 0; i <= countD; i++){
resultD += to_string(nextAvailable);
nextAvailable++;
}
reverse(resultD.begin(), resultD.end());
result = result + resultI + resultD;
return nextAvailable;
}
public:
string smallestNumber(string pattern) {
int i = 0;
int nextAvailable = 1;
int count = 0;
string result = "";
bool isFirst = true;
while(i < pattern.size()){
if((i == pattern.size()-1) || (pattern[i] == 'D')){
if(pattern[i] == 'I'){count++;i++;}
int countI = count;
while((i < pattern.size()) && (pattern[i] == 'D')){
count++;
i++;
}
int countD = count - countI;
int maxEle = nextAvailable + count - 1;
nextAvailable = getPossibleSeq(nextAvailable, countI, countD, result, isFirst);
//Ren-initialise
count = 0;
if(isFirst == true)isFirst = false;
}
else {
count++;
i++;
}
}
return result;
}
};Editor is loading...