【发布时间】:2014-11-04 13:36:11
【问题描述】:
我有一个 char 数组,其中有一些重复值:
A B C D E F E A
这是我删除重复值的算法:
char array[20] = {'A', 'B', 'C', 'D', 'E', 'F', 'E', 'A'};
int length = 8;
for (int i = 0; i < length; i++)
{
for (int j = i + 1; j < length - 1; j++)
{
if (array[i] == array[j])
{
array[j] = array[j + 1];
length--;
}
}
}
EXPECTED OUTPUT: A B C D E F
OUTPUT: A B C D E F A
我曾尝试在论文上运行此算法,当我以书面形式执行此操作时似乎没问题,但它在我的应用程序中不起作用。
【问题讨论】:
-
我猜
counter是结果长度。 -
对不起,我在这里发帖时没有重写它。它应该是长度而不是计数器。
-
您的“重复删除”步骤可靠地创建了一个新副本。你现在有
a[j] == a[j+1],而不是a[j] == a[i]。总是 -
或许了解调试器中的单步执行。 Beats 每次都“试图在纸上运行”。
-
你发的不是算法,是代码。