gpt4 book ai didi

c++ - 如何在 C++ 中对字符串 [] 进行排序

转载 作者:搜寻专家 更新时间:2023-10-31 00:22:37 25 4
gpt4 key购买 nike

输入是字符串[],如下所示。

"CSE111: CSE110 MATH101"

"CSE110:"

我需要根据某些逻辑对字符串进行排序。例如我的输出应该是一个 string[] like

"CSE110","MATH122","CSE111"

我的问题是

  1. 在扫描输入数组时,如果一个字符串被选为输出数组的第一个字符串,那么我该如何跳过所有出现的该特定字符串,同时继续处理 string[] 用于第二个输出字符串等。

例如:

输入:

"CSE111: CSE110 MATH101"

"CSE110:"

如果选择 CSE110 作为输出中的第一个字符串,那么当我扫描输入字符串 [] 以寻找第二个字符串作为输出的一部分时,我不应该考虑 CSE110。

我怎样才能做到这一点?我期待的答案是这样的:

  1. 将输入存储在字符串[]中
  2. 使用 strtok 或 stringstream >> 运算符逐个循环遍历字符串。
  3. 一旦找到第一个字符串...blah blah blah ....

希望我的问题足够清楚。我很乐意提供更多详细信息。

Edit1:更多解释

字符串表示需要类的顺序。如果一门课有先决条件,则必须先修先决条件。 IE。如果输入是

"CSE111: CSE110 MATH101"
"CSE110:"

CSE111 类(class)的先决条件是 CSE110 MATH101。所以我需要先考虑 CSE1110(无先决条件)- MATH101((无先决条件),然后是 CSE111。(进一步的关系可以按字母顺序打破。)我希望这会有所帮助..

最佳答案

我希望现在明白了:对于 A: B C D 形式的字符串,类(class) ABC D 作为先决条件。

在那种情况下,您需要从类(class)到其先决条件的映射,例如:

typedef std::set<std::string> CourseSet;
typedef std::map<std::string, CourseSet> Prerequisites;

现在您可以通过标记化填充Prerequisites,使用第一部分作为键,使用CourseSet作为值。

由于您似乎只想要输入中所有类(class)的可能顺序之一,因此您可以执行以下操作:

  • 完成类(class)的先决条件(即包括他们间接依赖的类(class))
  • 现在 a>b 如果 ab 作为先决条件
  • 如果 b 没有 a 作为先决条件使用,例如字典顺序

关于c++ - 如何在 C++ 中对字符串 [] 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3089302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com