LeetCode刷题 | 670. Maximum Swap | 中等难度 for循环处理题

Givena non-negative integer, you could swap two digits at most onceto get the maximum valued number. Return the maximum valued number you couldget.

Example1:

Input: 2736

Output: 7236

Explanation: Swap the number 2 and the number 7.

Example2:

Input: 9973

Output: 9973

Explanation: No swap.

Note:

1.      The given number is in the range [0,108]

思路:要求给出一个数,交换它的两个位数,求进行这样操作之后得到的最大的一个数,我的思路是把num转换成string,然后从前往后遍历,对于每一个数,从后往前找到比当前位数大的里面最大的一个数,然后将这连个数交换位置,如果没有找到,按照从前往后的顺序测试下一个数,如果找到了,交换位置之后就得到了最大的那个数,

这里我在把string转换成int和int转换成string的考虑过程中花费的大量的时间,我是自己写算法来实现这个功能的,但是c++自己有自己的函数来实现这个效果,int转string: to_string(int),string转int: atoi(string.c_str()),string.size()和string.length()得到的结果是一样的

class Solution {

    #include <string>

public:

    int maximumSwap(int num) {

       string numChange = "";

 

      char max = 47; int maxIndex;

      int temp = num % 10; num = num / 10;

      numChange = (char)(temp + '0') +numChange;

      while (num != 0)

      {

            temp = num % 10;

            num = num / 10;

            numChange = (char)(temp + '0') +numChange;

      }

 

      for (int i = 0; i < numChange.length();i++)

      {

            max = 47; maxIndex = -1;

            for (int j = numChange.length() - 1;j >= i; j--)

            {

                  if (numChange[j] >numChange[i])

                  {

                       if (numChange[j] >max)

                       {

                             maxIndex = j;

                             max = numChange[j];

                       }

                  }

            }

            if (maxIndex != -1)

            {

                  swap(numChange[i],numChange[maxIndex]);

                  break;

            }

      }

      return atoi(numChange.c_str());;

    }

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值