int s=0,t=0; for(int i=n;i>0;i/=10){ s=s*((i%10==0)?1:10)+i%10; } for(int i=s;i>0;i/=10){ t=t*10+i%10; }return t;
时间: 2024-04-12 11:31:46 浏览: 82
单片机I/O口详细的结构与原理(个人认为很经典)
这段代码实现了和之前提供的递归版本相同的功能,即删除正整数n中的数字0并返回结果。下面是这段代码的解释:
```java
int s = 0, t = 0; // 定义两个变量s和t,分别用于存储中间结果和最终结果
for (int i = n; i > 0; i /= 10) {
s = s * ((i % 10 == 0) ? 1 : 10) + i % 10;
}
```
这个循环遍历输入的正整数n的每一个位数,并根据当前位数是0还是非0来更新s。如果当前位数为0,则将s乘以10保持位数不变,否则将s乘以10并加上当前位数。
```java
for (int i = s; i > 0; i /= 10) {
t = t * 10 + i % 10;
}
```
这个循环遍历中间结果s的每一个位数,并将其逆序组合在一起,存储在变量t中。
最后,返回变量t作为结果,即删除n中的所有数字0后的结果。
你可以使用该函数来删除一个正整数中的所有数字0,例如:
```java
System.out.println(digitTrim(1018)); // 输出:118
System.out.println(digitTrim(20004)); // 输出:24
System.out.println(digitTrim(0)); // 输出:0
```
希望对你有帮助!如果你有任何疑问,请随时提问。
阅读全文