我在采访中被要求用位运算符交换整数中的最后一位数字和第一位数字。尝试了很多,但我找不到解决方案。我怎样才能做到这一点?使用按位运算符交换整数中的第一个数字和最后一个数字
回答
一个平凡的解决方案:
def swap_digit(n):
x = str(n)
if len(x) < 2:
return x
return int(x[-1] + x[1:-1] + x[0])
编辑:添加一个快速和肮脏℃溶液来
#include <stdio.h>
#include <string.h>
int main()
{
int n = 123456789;
char buf[100];
int r = snprintf(buf, sizeof(buf), "%d", n);
char t = buf[0];
buf[0] = buf[r-1];
buf[r-1] = t;
int swap;
sscanf(buf, "%d", &swap);
printf("n = %d, swap = %d\n", n, swap);
return 0;
}
def swap(i):
s = list(str(i))
s[0], s[-1] = s[-1], s[0]
i = int(''.join(s))
return i
print swap(123456789) # 923456781
使用int digits = log10(x)
得到的位数。
使用int first = x/pow(10,digits)
获取第一位数字。
使用int last = x % 10
得到最后一位数字。
把它放在一起,你有
int swapped = x + (last - first) * pow(10,digits) + (first - last)
令人惊叹! +1的想象力。 –
在我的系统上失败999999999999999。 –
@Dietrich Epp:是的,因为'999999999999999> 2^31-1'对于int来说太大了。我假设(也许很糟糕,但基于对问题的评论)“x”是作为“int”给出的。 – PengOne
- 1. C++删除数字的第一个和最后一个数字
- 2. 交换数组中的第一个和最后一个值(JAVA)
- 3. 在Java中交换字符串的第一个和最后一个字母?
- 4. 字符串的第一个字符和最后一个字符
- 5. 使用Java计算第一个和最后一个数字之间的所有数字的平均数
- 6. 如何将最大数字与数组中的最后一个数字交换?
- 7. 查找任意数字的第一个和最后一个数字的总和
- 8. 字符串中最后一个数字
- 9. 如何获取PHP中第一个和最后一个数字的数字?
- 10. 用一个字节中的第二个数字替换第一个数字
- 11. 如何使用按位运算符从另一个数字中删除一个数字?
- 12. jQuery给定字符的第一个和最后一个字符
- 13. BASH - 简单的第一个字符和最后一个字符
- 14. 在字符串的第一个和最后一个位置插入字符
- 15. Python找到字符串中最后一个数字的位置
- 16. 正则表达式用连字符和数字替换最后一位数字
- 17. 解析数组数据并删除第一个和最后一个字符
- 18. 整数窗口手机的第一个和最后两个数字
- 19. 去掉字符串中的最后一个字符和第一个字符
- 20. 删除字符串中的最后一个字符和第一个字符
- 21. 交换一个数组中的数字
- 22. 转换一个字符串数组,一个整数数组
- 23. 在Java中切换字符串的第一个和最后一个字母?
- 24. 替换字符串数组中的最后一个字母Javascript
- 25. 如何用此字符串中的两个不同字符替换第一个和最后一个字符“{0}”
- 26. 用无符号整数中的另一个字节替换第n个字节
- 27. 替换整数的最后一位数字
- 28. 用其第一个数字替换4位数字
- 29. C#在整数/字符串中搜索第一个数字
- 30. 从短整数开始拼接第一个和最后3个数字?
你为什么使其接近? –
这个问题有什么问题 –
自由使用'%10'会让你去你想去的地方。至于“有什么问题”,大多数SO用户更喜欢你展示解决它的企图,并询问你卡在哪里。 –