我在技术回合中遇到了这个项目.他们给了我这个程序,用于删除给定整数中的重复数字而不使用数组或字符串.
例:
int i = 123134254;
Run Code Online (Sandbox Code Playgroud)
预期产量: 12345
您可以使用int一个集合来存储您已经遇到的数字,方法是将每个数字(0,1,2,...,9)分配给所说的位数int.然后,您可以通过查看此集循环数字i并构建新数量的唯一数字.请注意,我首先反转数字,i以便我可以轻松地按顺序循环它们:
int i = 123134254;
int res = 0; // result
int set = 0; // digits we've seen
int rev = 0; // digits of `i` reversed
while (i > 0) {
rev = (rev * 10) + (i % 10);
i /= 10;
}
while (rev > 0) {
final int mod = rev % 10;
final int mask = 1 << mod;
if ((set & mask) == 0) {
res = (res * 10) + mod;
set |= mask;
}
rev /= 10;
}
System.out.println(res);
Run Code Online (Sandbox Code Playgroud)
12345
| 归档时间: |
|
| 查看次数: |
2747 次 |
| 最近记录: |