【问题标题】:Going through the strings to check if there is character appereance in every string [closed]遍历字符串以检查每个字符串中是否有字符出现[关闭]
【发布时间】:2019-02-01 16:21:12
【问题描述】:

给出了 N 个字符串。任务是计算每个给定字符串中是否包含任何字符(只能是一个)。

我不知道如何通过 for 循环并在每个字符串中搜索字符。

【问题讨论】:

  • 你尝试了什么?你卡在哪里了?也许您不知道如何完成整个项目,但您做什么呢?就目前而言,回答您的问题的唯一方法是给您一个算法(这可能对您没有帮助)或给您代码(这不是 StackOverflow 的运作方式,也可能不是您的教授想要的)。
  • 好吧,我不想要代码,但我们将不胜感激。如何搜索每个字符串以检查每个字符?
  • 通过使用某种循环来遍历所有字符串,然后在其中使用循环来查看每个字符串中的每个字符,并在内部循环中使用条件来检查各个字符。在不知道您遇到什么问题的情况下,我无话可说。
  • 你会怎么用笔和纸来做呢?在纸上写几个字符串,看看其中是否有一个字符出现,然后在代码中做同样的事情
  • 嗯,用笔和纸要容易得多,因为我不擅长将思想转化为代码。我想记住第一个字符串中出现的每个字符,然后检查其他字符串中的这些字符,但我害怕我无法编写该代码。

标签: c++ string c++14


【解决方案1】:

为每个字符串创建一个填充其内容的set<char>,当您完成所有操作后,通过一个set 并检查所有其他sets 中也存在哪些字符。

在一个集合中,一个元素只出现一次,搜索/插入速度很快,因为它们是有序的

我不提供(琐碎的)代码,因为你说你不想要它。

当您填充第 n 个set 时,您还可以在添加它以限制sets 大小之前检查该字符是否也存在于第n-1 个其他sets 中,但不确定这是一个真正的优化(最终检查仍然是强制性的)


如果字符串的数量小于或等于 unsigned long 的位数:您将一个位与每个字符串相关联:第一个位为 0,第二个为位 1 ...,然后您使用 vector<unsigned long>unsigned long[MAX_CHAR - MIN_CHAR + 1] 并为每个字符串的每个字符设置与字符对应的索引处的第 n 位。最后,您遍历向量并查看该值是否设置了所有必要的位

【讨论】:

    猜你喜欢
    • 2017-07-22
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多