【发布时间】:2014-01-19 08:09:32
【问题描述】:
public static bool IsAnagramOf(this string word1, string word2)
{
return word1.OrderBy(x => x).SequenceEqual(word2.OrderBy(x => x));
}
我目前正在从一个包含所有英文单词的大型 xml 文件中提取所有内容。然后我将每个单词与给定的字符串进行比较,看看它是否是一个字谜。然后我存储每个正确的单词并返回它们。
不过……
我想这样做,所以字谜不必具有相等的字符串长度。
例如:“Hello”包含“Hello”、“Hell”、“He”等...
有没有办法在代码中相对较小?
谢谢!
编辑:所以包括子字谜以及等长的字谜。
【问题讨论】:
-
查看
String.IndexOf方法。 -
但是“你好”和“他”不是字谜,对吧?
-
所以你并不真正想要字谜,而只是单词中包含字母的单词。使用
.Contains或.Intersection。 -
字谜和子字谜,如果你愿意的话?
-
@BartoszKP - 好点......我认为这可能还不够 - “帮助”不能重新排列成“地狱”,但直接
Contains/Intersect检查会成功
标签: c# string linq lambda anagram