Пересечение двух массивов с заданным условием - 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));

Оцени полезность:

11   голосов , оценка 4.545 из 5
Похожие ответы