当最后有零时,是否有任何找到反向的技术.
在遵循%10技术的算法时,结果为52.并且0缺失.
我只是通过打印提醒(0)来反过来.但我不满意,因为我希望将答案显示为变量中的值.
请告诉我是否有任何技术将值005存储到变量并显示005(请不要使用字符串或字符或数组).
数字存储为二进制 0 和 1,因此它们总是有前导 0 被砍掉。例如,一个 64 位整数有 64 位,总是和打印时这些前导 0 被丢弃。
您需要知道要保留多少个前导零,并且仅在打印时使用那么多。即,您可以记录一个正常数字中有多少个前导零,而无需对其进行编码,例如在开头添加 1。ie0052
被记录为10052
并且您在打印时跳过第一个数字。
如果您需要存储单个值,您可以执行以下操作。我使用 do/while 使其0
变为10
并打印为0
. 该数字0
是并非所有前导零都被删除的地方(否则它将为空)
这似乎是您想要的解决方案,它在 C 或 C++ 中应该基本相同
static long reverse(long num) {
long rev = 1; // the 1 marks the start of the number.
do {
rev = rev * 10 + num % 10;
num /= 10;
} while(num != 0);
return rev;
}
// make the reversed number printable.
static String toStringReversed(long num) {
return Long.toString(num).substring(1);
}
long l = reverse(2500); // l = 10052
Run Code Online (Sandbox Code Playgroud)
另一种方法是随时打印数字,因此不需要存储它。
例如
static void printReverse(long l) {
do {
System.out.print(l % 10);
l /= 10;
} while(l != 0);
}
Run Code Online (Sandbox Code Playgroud)
或者您可以让输入记录位数。
static void printReverse(long l, int digits) {
for(int i = 0; i < digits; i++) {
System.out.print(l % 10);
l /= 10;
}
}
// prints leading zero backwards as well
printReverse(2500, 6); // original number is 002500
Run Code Online (Sandbox Code Playgroud)
印刷
005200
Run Code Online (Sandbox Code Playgroud)