从数字中删除数字而不反转数字

问题描述 投票:0回答:1

我进行了一次练习,需要创建一个获取两个参数(数字(长整数)和数字(整数)的函数,我必须从数字中删除数字并返回它。

当我进行练习时,我将数字反转,最后再次将其反转以获得原始数字。

我想知道是否有一种方法可以不重复两次反转数字。

long myFunction(long number, int digit){

int tmp = 0;
if (digit <= 9 && digit >= 0){

    while (number != 0){  

        if (number % 10 != digit){

            tmp = (tmp + (number % 10)) * 10;

        }
        number = number / 10;
    }
    tmp = tmp / 10;

    int rev = 0, remainder;
    while (tmp != 0) { // Reverse an Integer

        remainder = tmp % 10;
        rev = rev * 10 + remainder;
        tmp /= 10;
    }
    return rev;

    }
    return number;
}
c reverse digits
1个回答
2
投票

一种不同的方法可能是跟踪要添加到结果中的数字的位置(通过将其乘以10 position)。这样,您不必在完成后就将数字取反:

long removeDigit(long number, int digit) {
    long result = 0L;
    long multiplier = 1L;
    while (number > 0L) {
        int currDigit = (int) number % 10;
        if (currDigit != digit) {
            result += multiplier * currDigit;
            multiplier *= 10;
        }
        number /= 10;
    }
    return result;
}
© www.soinside.com 2019 - 2024. All rights reserved.