【发布时间】:2014-03-28 18:59:36
【问题描述】:
我在 C# 中有一个很长的单词列表,我想在该列表中找到所有单词的首尾字母相同,并且长度介于 5 到 7 个字符之间。例如,列表可能有:
“浪费了被洗了洗了洗了看着手表枯萎了”
它会返回
长度:5-7,第一个字母:w,最后一个字母:d,“浪费、洗涤、观看” 长度:5-7,第一个字母:w,最后一个字母:s,“washes, watch, wilts, wastes”
然后我可能会将规范更改为 3-4 个字符的长度,这将返回
长度:3-4,第一个字母:w,最后一个字母:s,“was, wits”
我发现这种拆分方法非常快,使每个项目都独一无二,使用长度并给出了一个很好的开始: Spliting string into words length-based lists c#
有没有办法修改/使用它来考虑第一个和最后一个字母?
编辑
我最初询问“最快”的方式是因为我通常使用大量字符串数组(速度慢且涉及大量代码)来解决此类问题。 LINQ 和查找对我来说是新的,但我可以看到我链接到的解决方案中使用的 ILookup 的简单性和速度非常快。我实际上并不需要最少的处理器时间。任何避免我为这些信息创建单独数组的方法都很棒。
【问题讨论】:
-
可能有。你有什么问题,要我们为你写代码吗?
-
“最快”?噗。为什么不使用 Where 然后使用 GroupBy?现代 CPU 非常快;在编写完成这项工作的内容之后,然后对其进行分析以查看它是否需要“更快”。 Where/GroupBy 方法在复杂性方面也非常有效。
-
我不知道什么会更快,因为我看到人们发布的大多数答案都涉及 Linq,但另一种选择可能是正则表达式......
-
感谢您的反馈,我已经对其进行了修改,去掉了“最快”这个词,并且我已经解释了我上面想说的内容。
标签: c# string list lookup ilookup