Next Closest Time Posted on 2018-10-21 Descriptionhttps://leetcode.com/problems/next-closest-time/ Solution123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657class Solution {public: string nextClosestTime(string time) { string ret = time; set<int> digits; digits.insert(time[0] - '0'); digits.insert(time[1] - '0'); digits.insert(time[3] - '0'); digits.insert(time[4] - '0'); int index = 4; //Process Minute auto next = digits.lower_bound(time[index] - '0'); if (*next == time[index] - '0') ++next; cout << *next << endl; if (next != digits.end()) { ret[index] = *next + '0'; return ret; } ret[index] = *(digits.begin()) + '0'; --index; next = digits.lower_bound(time[index] - '0'); if (*next == time[index] - '0') ++next; if (next != digits.end() && *next <= 5) { ret[index] = *next + '0'; return ret; } ret[index] = *(digits.begin()) + '0'; index -= 2; //Process Hour next = digits.lower_bound(time[index] - '0'); if (*next == time[index] - '0') ++next; int bound = (time[0] - '0') == 2 ? 3 : 9; if (next != digits.end() && *next <= bound) { ret[index] = *next + '0'; return ret; } ret[index] = *(digits.begin()) + '0'; --index; next = digits.lower_bound(time[index] - '0'); if (*next == time[index] - '0') ++next; if (next != digits.end() && *next <= 2) { ret[index] = *next + '0'; return ret; } ret[index] = *(digits.begin()) + '0'; return ret; }};