Пересечение двух массивов с заданным условием - C#
Формулировка задачи:
Добрый день!
Есть 2 массива типа string. Нужно вернуть индексы элементов первого массива, в элементах которого содержатся элементы второго массива.
Разумеется, прогонять двойной цикл не целесообразно.
Думал в сторону Linq и регулярных выражений, но пока не смог ни к чему придти.
Подскажите, в какую сторону двигаться
Решение задачи: «Пересечение двух массивов с заданным условием»
textual
Листинг программы
static IEnumerable<int> FindIntersection(string[] left, string[] right, Func<string, string, bool> predicate) {
var result = new List<int>();
for (int i = 0; i < left.Length; i++) {
for (int j = 0; j < right.Length; j++) {
if (!result.Contains(i) && predicate(left[i], right[j])) {
result.Add(i);
}
}
}
return result;
}
var a1 = new[] { "ab", "c", "b" };
var a2 = new[] { "a", "b", "cc" };
var result = FindIntersection(a1, a2, (l, r) => l.Contains(r));