-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path738.cpp
More file actions
34 lines (29 loc) · 771 Bytes
/
738.cpp
File metadata and controls
34 lines (29 loc) · 771 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <string>
#include <cassert>
int monotoneIncreasingDigits(int N) {
std::string strN = std::to_string(N);
int marker = strN.size();
for (int i = strN.size() - 1; i > 0; --i) {
if (strN[i - 1] > strN[i]) {
marker = i;
strN[i - 1]--;
}
}
for (int i = marker; i < strN.size(); ++i) {
strN[i] = '9';
}
return std::stoi(strN);
}
int main(int argc, char const *argv[])
{
int ret;
ret = monotoneIncreasingDigits(123);
assert(ret == 123);
ret = monotoneIncreasingDigits(322);
assert(ret == 299);
// ret = monotoneIncreasingDigits(456);
// ret = monotoneIncreasingDigits(987);
ret= monotoneIncreasingDigits(100);
assert(ret == 99);
return 0;
}