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

Remove digits from number without reversing the number

我得到一个练习,我需要创建一个函数来获取两个参数,数字 (long) 和数字 (int),我必须从数字中删除数字,然后 return 它。

我做题的时候把数字倒过来,最后再倒过来得到原来的数字。

我想知道有没有什么方法可以不把数字倒过来做两次

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;
}

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

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;
}