我做这样的数字之和:
events
但我需要的是,如果数字是(例如)123444,那么它总和中只包含一个4。我怎么能这样做?
答案 0 :(得分:1)
将所有数字的数组初始化为零
int digits[10] = { 0 };
然后在添加数字之前,检查digits[that_digit]
是否为零,如果是,则将其设置为1并添加到总和,如果没有继续...
while(number>0)
{
int one = number%TEN;
if ( ! digits[one]) {
sum+=one;
digits[one] = 1;
}
number=number/TEN;
}
编辑,没有数组版本
添加一个初始化为0的int,位i
表示该数字i
是否已被求和。
如果添加1,则位1设置为1,如果为2,则位2设置为1等...
int bits = 0;
while(number>0)
{
int one = number%TEN;
if (!(bits & (1<<one))) {
sum+=one;
bits |= 1<<one;
}
number=number/TEN;
}
答案 1 :(得分:0)
首先,你应该把一些代码放在这里,无论你尝试什么,给你基本的想法来解决你的问题我将简单的代码放在下面。
B = [2,1,0]
我在评论中提到的这段代码的解释,它可能不适用于所有测试用例,继续尝试自己。