weixin_44141090
JokeL
采纳率0%
2019-03-08 20:44 阅读 1.3k

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • caozhy 从今以后生命中的每一秒都属于我爱的人 2019-03-08 23:46

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

    点赞 评论 复制链接分享
  • IDispatchwang IDispatchwang 2019-03-09 14:40

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

    点赞 评论 复制链接分享
  • qdv1100 qdv1100 2019-03-09 21:10

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

    点赞 评论 复制链接分享

相关推荐