Untitled
unknown
plain_text
3 years ago
1.6 kB
10
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...