LeetCode556. Next Greater Element III
题目: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 integern 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
题意分析:这道题和其实和31. Next Permutation差不多,都是考的同样的考点,所以也没啥特别的分析,有兴趣的话可以去看下31题的leetcode。
代码:
class Solution {
public:
int nextGreaterElement(int n) {
string str = to_string(n);
string tmp = str;
next_permutation(str.begin(),str.end());
if (tmp >= str) {
return -1;
}
else {
return stringtoint(str);
}
}
int stringtoint(string str) {
int size = str.size() - 1,sum = 0;
for (int i = 0; i < str.size(); i++) {
sum += pow(10, size--)*(str[i] - '0');
if (sum < 0) return -1;
}
return sum;
}
};