我进行了一次练习,需要创建一个获取两个参数(数字(长整数)和数字(整数)的函数,我必须从数字中删除数字并返回它。
当我进行练习时,我将数字反转,最后再次将其反转以获得原始数字。
我想知道是否有一种方法可以不重复两次反转数字。
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;
}
一种不同的方法可能是跟踪要添加到结果中的数字的位置(通过将其乘以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;
}