c - 从号码中删除数字而不反转号码
问题描述
我有一个练习,我需要创建一个函数来获取两个参数,数字(long)和数字(int),我必须从数字中删除数字并返回它。
当我做练习时,我将数字反转,最后我再次反转它以获得原始数字。
我想知道是否有一种方法可以在不颠倒数字两次的情况下进行练习。
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;
}
推荐阅读
- mysql - 如何为 docker mysql 实例的 root 用户重新分配“主机”
- python - 在没有分页的情况下在python中截取整页截图
- javascript - window.language 和 navigator.language 有什么区别?
- javascript - 如果是 obj,则按属性过滤 JSON 结果。React.js 的属性为真
- c# - ChannelFactory:Channel Close() 未关闭连接(netstat 显示 ESTABLISHED)
- angular - ERROR 错误:mat-form-field 必须包含 MatFormFieldControl。对于使用角度材料 7 的日期选择器
- angular - Angular swPush.requestSubscription 在第一次调用时没有返回任何内容
- python - 是否可以将 Xcode 中的 python 模块与我的 coreML 模型集成?
- apache-kafka - Kafka Connect - 获取具有相关 ID UNKNOWN_TOPIC_OR_PARTITION 的元数据时出错
- reactjs - TypeScript React:使用 useRef 获取表单值