C++ 用指针数组处理若干个字符串,要求去除其中重复的字符串,每种字符串只保留一个。

个人的思路是:将第一次出现的字符串存入另一个字符串str2中,再出现的话进行判断是否存入str2,循环遍历,最终输出str2
求大神指点!!

如 char*str[100]={"America","America","China","China"}
最终输出 America China

c++那就用stl中的map,
定义一个map mark;
遇到字符串先标记 :比如遇到“hello”,那就mark["hello"] = 1;
如果字符串已标记为1那就说明前面遇到过就删除

你那个想法是可以的,只不过算法复杂度是O(N^2)
一个高效一些的做法是先排序,然后遍历,因为相同的字符串经过排序肯定是相邻的,直接跳过就可以了。

还有个类似的方法,扫描要剔重的字符串数组,将每个字符串插入到一个排序树中,比如平衡二叉树之类的(或者set里面),插入时如果发现重复就不再插入。这个只需要一遍排序即可完成。如果仅仅是要代码简单,那么就用上面说的方法。