如何从整数中删除最小值数字并返回其余部分而不使用字符串

时间:2014-01-30 05:16:10

标签: java

如何从整数中删除最小值数字并返回其余部分而不使用string.Like如果我们有数字4412,则返回1并返回442。 我做了编码以提取最小的数字,但不知道如何组合其余的。

public class RemoveSmallestDigit {

    static int testcase1 = 4487;
    static int testcase2 = 1111;

    public static void main(String args[]){
        RemoveSmallestDigit testInstance = new RemoveSmallestDigit();
        int result = testInstance.removeSmallestDigit(testcase1);
        System.out.println(result);
    }

    //write your code here
    public int removeSmallestDigit(int num){
        int small=9;
        int digit=0;
        while(num!=0){
            digit=num%10;
            num=num/10;
            if(digit<=small){
                small=digit;
            }
        }
        System.out.println(small);
        return small;

    }
}

2 个答案:

答案 0 :(得分:5)

我建议你把它分解为几步。例如,您可能会执行类似

的操作
  1. 查找数字的数字并存储为数组

  2. 找到最低位并将其从阵列中删除

  3. 将新数组转换回数字

  4. 当然,如果您发现对您更有意义的事情,您可以提出自己的步骤。主要思想是将问题分解为更小的问题。如果您遇到任何这些较小的问题,请回过头来提问。

答案 1 :(得分:-1)

public  int removeSmallerdigit( int a)
{
  int smalldigit=0;

int ReverseNumber=0;
int finalNumber=0;
int digit=0;
       while(a>0)
       { 
               digit=a%10;
                 a=a/10;
               if(smalldigit>digit)
                  {
                     smalldigit=digit;
                  }
        ReverseNumber=ReverseNumber*10+digit;
       }

       while(ReverseNumber>0)
         {
              digit=ReverseNumber%10;
                ReverseNumber=ReverseNumber/10;
               if(smalldigit!=digit)
                  {
                     finalNumber=finalNumber*10+digit;
                  }

       }
    return finalNumber;
}