当前位置:网站首页>每日一题-LeetCode556-下一个更大元素III-字符串-双指针-next_permutation

每日一题-LeetCode556-下一个更大元素III-字符串-双指针-next_permutation

2022-07-04 20:23:00 李烦烦搞快点

原题链接
在这里插入图片描述

Note:

先从后往前找,找到第一个变小的数,然后把他和后面 比他大的最小的一个数进行交换
再把换完之后他后面的所有位置reverse一遍,返回答案即可

代码如下:

class Solution {
    
public:
    int nextGreaterElement(int n) {
    
        string s = to_string(n);
        int k = s.size() - 1;
        while(k && s[k - 1] >= s[k]) k --;
        if(!k)  return -1;
        int t = k;
        while(t + 1 < s.size() && s[t + 1] > s[k - 1])  t ++;
        swap(s[k - 1], s[t]);
        reverse(s.begin() + k, s.end());
        long long res = stoll(s);
        if(res > INT_MAX)   return -1;
        return res;

    }
};
原网站

版权声明
本文为[李烦烦搞快点]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Mr_Ghost812/article/details/125590228