删除整数中的重复数字

时间:2014-08-10 17:28:57

标签: java arrays int

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

示例:

int i = 123134254;

预期输出:12345

3 个答案:

答案 0 :(得分:7)

您可以使用int作为一组来存储您已经遇到过的数字,方法是将每个数字(0,1,2,...,9)分配给所说的{{ 1}}。然后,您可以循环遍历int的数字,并通过查阅此集合来构建新的唯一数字。请注意,我首先反转i的数字,以便我可以轻松地按顺序循环它们:

i
12345

答案 1 :(得分:2)

您可以使用%/运算符提取i的数字。

d0 = i % 10是LSB数字
d1 = ((i - d0) / 10) % 10是第二位数字 ... 等等。

这将为您提供从右到左的所有数字。

由于您不允许将它们放入数组中,因此请将它们放入堆栈中(希望这是允许的)。这将允许您从堆栈中从左到右弹出它们。

对于您从Stach中弹出的每个数字,将其存储在一组重复项中,并且只有当它不在该Set中时,才输出它。

现在,要创建输出int,每次输出数字时都会以这种方式修改输出:

output = output * 10 + digit;

答案 2 :(得分:1)

1:反转号码
2:得到最后一位数1乘1 3:用答案
中的所有数字检查这个数字 4:如果没有重复发现将其添加到答案中

int i = 123134254;
int copy = 0;
while (i > 0) {
    copy = (copy * 10) + (i % 10);
    i /= 10;
}
int dig = copy % 10;
int ans = dig;
copy /= 10;
while (copy > 0) {
    boolean flag = false;
    dig = copy % 10;
    long copy2 = ans;
    while (copy2 > 0) {
        if (copy2 % 10 == dig) {
            flag = true;
            break;
        }
        copy2 /= 10;
    }
    if (!flag) {
        ans = ans * 10 + dig;
    }
    copy /= 10;
}
System.out.println(ans);