556. 下一个更大元素 III

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;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容