【发布时间】:2011-02-17 18:28:42
【问题描述】:
C 对字符串的处理让我很困扰。我脑子里有个这样的伪代码:
char *data[20];
char *tmp; int i,j;
for(i=0;i<20;i++) {
tmp = data[i];
for(j=1;j<20;j++)
{
if(strcmp(tmp,data[j]))
//then except the uniqueness, store them in elsewhere
}
}
但是当我对此进行编码时,结果很糟糕。(我处理了所有的内存内容,小事情等)问题显然出在第二个循环中:D。但我想不出任何解决方案。如何在数组中找到唯一的字符串。
输入示例:输入 abc def abe abc def deg 唯一的:应该找到 abc def abe deg。
【问题讨论】:
-
首先对数组进行排序会让您走得更远。然后只是遍历字符串,如果当前字符串与之前的字符串不同,它是唯一的,你可以将它存储在其他地方。
-
问题是我需要确切的位置。你知道这样:输入:abc def abe abc def deg 输入了唯一的:abc def abe deg 如果我对数组进行排序,我将得到这样的唯一的:abc abe def deg 这不是我想要的我需要的位置也是。
-
然后在您排序的初始数组中创建一个指针数组或数组索引数组,而不是对初始数组进行排序。
-
他也可以尝试构建一个哈希表,尽管只有 20 个左右的项目,这肯定是矫枉过正。