556. 下一个更大元素 III
class Solution {
public:
int nextGreaterElement(int n) {
string s = to_string(n);
bool desc = true;
int m = s.size();
for(int i = 0; i < m - 1; i++) {
if(s[i] < s[i+1])desc=false;
}
if(desc) return -1;
int j, k;
for(int i = m - 1; i>=0; i--) {
if(s[i-1] < s[i]) {
j = i - 1;
break;
}
}
for(int i = m - 1; i>=0 ;i--) {
if(s[i] > s[j]) {
swap(s[j], s[i]);
sort(s.begin() + j + 1, s.end());
break;
}
}
long long a = atoll(s.c_str());
if(a > INT_MAX) return -1;
return a;
}
};