找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 941|回复: 7
收起左侧

[提问] 第四题,帮忙看看,有个case死活过不了

[复制链接]

11

主题

3

精华

184

积分

资深会员

Rank: 2

积分
184
发表于 9-30-2015 09:12 PM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
  1. /*
  2. Description
  3. Given an integer, find the maximum integer by swapping any two digits.

  4. Input
  5. The input should be a non-negative integer less than 1010.

  6. Output
  7. The result should be in the format of Integer.

  8. Sample Input
  9. 102
  10. Sample Output
  11. 201
  12. HINT
  13. Brute-force


  14. Source
  15. Easy

  16. */



  17. #include <iostream>
  18. #include <stack>  
  19. #include <vector>
  20. #include <algorithm>
  21. using namespace std;
  22. class Solution {
  23. public:
  24. int maximizeResult(int n) {
  25.                 if (n == 0) {
  26.        
  27.                         return 0;
  28.                 };
  29.                 int debug = 0;
  30.                 vector<int> nums;
  31.                 while(n > 0){
  32.                         nums.push_back(n%10);
  33.                         n /= 10;
  34.                 }       
  35.                 if (debug){
  36.                         for (int i = 0; i < nums.size(); ++i) cout << nums【i】 << ", ";
  37.                                 cout << endl;
  38.                 }
  39.                 bool done = false;
  40.                 int index = -1;
  41.                 int original = -1;       
  42.                 for (int i = nums.size() - 1; i >= 0; --i){
  43.                         int local_max = nums【i】;
  44.                         for (int j = 0; j < i; ++j){
  45.                                 if (nums[j] > local_max && (i != nums.size() - 1 || nums[j] != 0)){
  46.                                         index = j;
  47.                                         original = i;
  48.                                         local_max = nums[j];
  49.                                         done = true;
  50.                                 }       
  51.                                        
  52.                                 }
  53.                                 if(done) break;
  54.                        
  55.                 }
  56.                 if (!done){
  57.                         int temp = nums[0];
  58.                         nums[0] = nums[1];
  59.                         nums[1] = temp;
  60.                 }
  61.                 else{
  62.                         int temp = nums[index];
  63.                         nums[index] = nums[original];
  64.                         nums[original] = temp;

  65.                 }
  66.                 if (debug){
  67.                         for (int i = 0; i < nums.size(); ++i) cout << nums【i】 << ", ";
  68.                                 cout << endl;
  69.                 }
  70.                 int res = 0;
  71.                 int digit = 1;
  72.                 for (int i = 0; i < nums.size(); ++i){

  73.                         res += (nums【i】 * digit);
  74.                         digit *= 10;
  75.                         if (debug) cout << res << endl;
  76.                 }
  77.                 return res;


  78.         }

  79.        
  80. };
  81. int main(){

  82.         Solution solution;
  83.         int res = solution.maximizeResult(0);
  84.         cout << "--------------------------------------------" << endl;


  85.         cout << res << endl;
  86. }//
复制代码
发表于 9-30-2015 09:38 PM | 显示全部楼层
站长已经小窗曹神导师了~~~
我们始终相信IT会持续改造甚至创新传统行业,我们始终全面看好咱们的CS专业!
回复 支持 反对

使用道具 举报

发表于 9-30-2015 09:59 PM | 显示全部楼层
Try 1234567890
我们始终相信IT会持续改造甚至创新传统行业,我们始终全面看好咱们的CS专业!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表