个人的思路是:将第一次出现的字符串存入另一个字符串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里面),插入时如果发现重复就不再插入。这个只需要一遍排序即可完成。如果仅仅是要代码简单,那么就用上面说的方法。