题目描述:
Given a positive 32-bit integer n, you need to find the smallest 32-bit integer which has exactly the same digits existing in the integer n and is greater in value than n. If no such positive 32-bit integer exists, you need to return -1.
Example 1:
Input: 12 Output: 21
Example 2:
Input: 21 Output: -1
class Solution {
public:
int nextGreaterElement(int n) {
string s=to_string(n);
int i=s.size()-2;
while(i>=0&&s[i]>=s[i+1]) i--;
if(i<0) return -1;
int j=i;
while(j<s.size()-1&&s[j+1]>s[i]) j++;
swap(s[i],s[j]);
reverse(s.begin()+i+1,s.end());
long long result=stoll(s);
if(result>INT_MAX) return -1;
else return result;
}
};