删除整数中的重复数字

use*_*208 5 java arrays int

我在技术回合中遇到了这个项目.他们给了我这个程序,用于删除给定整数中的重复数字而不使用数组或字符串.

例:

int i = 123134254;
Run Code Online (Sandbox Code Playgroud)

预期产量: 12345

ars*_*jii 7

您可以使用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