gpt4 book ai didi

c# - 如何按频率顺序找到最长的子串?

转载 作者:行者123 更新时间:2023-11-30 18:39:17 24 4
gpt4 key购买 nike

这最好用一个例子来描述。给定段落:

这段中最长的字符串不是段落中最短的字符串,因为它是段落中最长的字符串

我想先按频率再按长度列出匹配子串的顺序,所以在这种情况下,应该列出(不区分大小写)

  • 最长的字符串
  • 段落
  • 不是中最短的字符串
  • 因为
  • 这个

上面按照出现频率的顺序列出了子串,后面是长度,所以The longest string in重复了两次,就是最长的子串。 不是中最短的字符串,比段落长,但是段落重复了两次,所以列在最前面。

更新(基于 AlexC 和 MattBurland 的观察):

即使像空格字符或 in 这样的子字符串出现的次数比其他子字符串多,如果它们已经包含在比它们的出现次数 * 长度长的子字符串中,也不应该被列出.例如in出现了3次,长度为6个字符(包括末尾的空格9个),但由于9个字符比段落短,所以没有列出.我希望这是有道理的?

最佳答案

是的,就像其他人所说的那样,如果您从您提供的示例中提取子字符串并修剪空格,您将得到一个字符串数组,如下所示:

string[] myArray = {"the", "longest", ....等

现在,您可以在数组中循环删除相似的字符串,同时增加它们的出现次数。然后将此信息添加到列表中。

然后您再次循环以按长度对它们进行排序。但是,最后,列表中的字符串仍然不能是单词的组合,除非输入字符串最初由空格以外的其他内容分隔,例如 $ 符号。

“$这个段落$中最长的字符串不是$该段落$中的最短字符串,因为它是$该段落$中最长的字符串”

如果是这种情况,您只需执行与上述完全相同的过程,但用 $ 符号而不是空格分隔子字符串。

关于c# - 如何按频率顺序找到最长的子串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10198121/

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