lzx2871 2010-05-07 17:52
浏览 214
已采纳

一道求数程序题,求最高效率。

随便输入一个整数,输出第一个比它大的数。

比如123 下一个就是132 再者就是312

只要找出下一个即可

如果自己本身是最大的,则自动填零。比如987,则输出9870

能处理1到十位之间的数(要求高效率的)

  • 写回答

4条回答 默认 最新

  • qwe_rt 2010-05-09 10:38
    关注

    部分伪代码实现,接下来Lz锻炼锻炼coding :D :D :D
    [code="java"]
    public class Util(){

    public int parse(int argInput){
    //将整数单个分解存于数组arr中。
    String str = argInput+"";
    int length =str.length();
    int[] arr = new int(length );
    for(int i = 0;i<length;i++){
    arr[i]=Integer.parseInt(str.substring(i,i+1));
    }
    int index = length -1;
    while(index==0){//从数的最后一位开始,查找前一位比一位小的数。
        if(arr[index]>arr[--index])break;
        }
    
    if(index==0){//添加一个0,处理.这中情况如“321”
    
    //将0放在数组的第二个位置,数组的第一个位置放原来数值中的最小数,比如321中的“1”
    //这是数组为“1 0 ..”
    ...
    //数组第二个位置后面的数从小到大排列。
    ...
    
    }else{//不添加0 这种情况如“2563”
    
    //将index位置的值与index-1的值互换。如将6与5互换,“2653”。
    ...
    //将index后面(包含index位置)的数值从小到大排列。这时将“5 3”从小到大排列。
    ...
    }
    ///将int数组arr各个数值按顺序生成一个整数。返回所需要的值。
    

    }//end parse

    }[/code]

    代码实现请看:
    http://www.iteye.com/problems/38009

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面