zoukankan      html  css  js  c++  java
  • 670. Maximum Swap

    slow:

    class Solution {
    public:
        int maximumSwap(int num) {
            string s = to_string(num);
            int pos[10] = { -1 };
            for (int i = s.length() - 1; i >= 0; i--) {
                if (i > pos[s[i]-'0'])
                    pos[s[i]-'0'] = i;
            }
            for (int i = 0; i < s.length(); i++) {
                for (int j = 9; j > s[i]-'0'; j--)
                    if (pos[j] > i) {
                        swap(s[pos[j]], s[i]);
                        return stoi(s);
                    }
            }
            return num;
        }
    };

    faster:

    class Solution {
    public:
        int maximumSwap(int num) {
            string s = to_string(num);
            int x = -1, y = -1, _max = s.length() - 1;
            for (int i = s.length() - 2; i >= 0; i--) {
                if (s[i] > s[_max]) {
                    _max = i;
                }
                else if (s[i] < s[_max]) {
                    x = i;
                    y = _max;
                }
            }
            if (x >= 0) {
                swap(s[x], s[y]);
            }
            return stoi(s);
        }
    };
  • 相关阅读:
    枚举类 --单例模式
    模板设计模式
    动态代理
    反射应用--修改属性值
    通过反射绕过泛型
    java反射
    网络编程练习
    TCP编程
    GUI 聊天界面
    UDP传输多线程
  • 原文地址:https://www.cnblogs.com/JTechRoad/p/9122065.html
Copyright © 2011-2022 走看看