gpt4 book ai didi

c# - Strings.Contains 的通用列表等价物是什么?

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

我有一个方法可以在 2 个字符串中搜索最长的匹配子字符串。它通过循环执行此操作:

myFirstString.contains(mySecondString.subset(i,j))

但是,如果相反,我想在 2 个有序列表中找到最长的匹配子列表怎么办?换句话说,如果我的数组不是字符而是其他对象怎么办?

什么是字符串的“.contains”的列表?

myFirstList.contains(mySecondList.getRange(i,j)) 是不正确的,因为 .contains 这里是在寻找一个项目,而不是一个列表。
.Intersection() 只检查匹配项,不匹配项的子列表。

(理想情况下,我希望此方法能够使用 List ,但 List 可以。)

最佳答案

您可以使用 Contains 的扩展版本首先尝试找到 list2 的第一个元素第一次出现的索引里面list1 .如果找到,则迭代到最后一次出现 list2 的第一个元素。里面list1 .如果使用 SequenceEqual 找到任何此类索引的匹配项,循环返回。这是 generic & extended Contains 的版本:

public static class ExtensionMethods
{
public static bool Contains<T>(this List<T> list1, List<T> list2)
{
int firstIndex = list1.IndexOf(list2.First());
int lastIndex = list1.LastIndexOf(list2.First());

if (firstIndex == -1) return false;

for (int i = firstIndex; i <= lastIndex; i++)
{
if (list1.GetRange(i, list2.Count).SequenceEqual(list2)) return true;
}

return false;
}
}

顺便说一下,你必须要实现IEquatable<T>类内部T .

关于c# - Strings.Contains 的通用列表等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22793365/

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