在C#中,有没有一种方法可以将链表转换为字符串?
我有一个句子的链表和另一个单词的链表。我想检查单词链表中的单词的句子链表,并认为一个好的方法是将单词链表转换为字符串。
还考虑使用嵌套while循环。
认为一个好方法是将单词链表转换为字符串。
任何时候你有一个X和Y的列表,并且你想检查X中的任何元素是否在Y中,你需要的可能是一个哈希集(而不是列表(
哈希集提供固定值的快速查找。你的算法应该是:
- 将搜索列表加载到集合中
- 枚举在中搜索的列表,重复询问当前项目是否在集合中
var hs = listOfWords.ToHashSet();
foreach(var sentence in listOfSentences){
foreach(var word in sentence.Split()){
if(hs.Contains(word))
{
...
}
}
}
或者在LINQ风格的方法中
var hs = listOfWords.ToHashSet();
var result = listOfSentences.Where(sentence=>
sentence.Split().Any(word =>
hs.Contains(word)
)
);
注意:默认情况下,字符串的c#哈希区分大小写,每个字符都有助于字符串相等。对于"hello","world","foo","bar"
的单词列表和"Hello world!", "Foo bar."
的句子列表,这些句子不包含单词列表中的任何单词。Hello
不等于hello
,world!
不等于world
。仔细处理你的句子,这样你就可以比较苹果和苹果了——例如去掉标点符号,并使大小写相等,例如