есть массив
var results: [String] = [“Winter Summer Winter”, “Winter Spring Autumn”, “Autumn Winter Spring”]
нужно выяснить есть ли в элементах массива повторяющиеся времена год, которые могут идти не по порядку и вывести количество повторяющихся.
В данном случае их 2 [Winter Spring Autum] и [Autumn Winter Spring]
Заметка: Код должен быть универсальным, то есть могут быть не только времена года
Задача на массивы в swift
let results: [String] = ["Winter Summer Winter", "Winter Spring Autumn", "Autumn Winter Spring"]
var dict = [String: Int]()
for str in results {
for subStr in str.split(separator: " ") {
let key = String(subStr)
dict[key] = dict[key, default: 0] + 1
}
}
for (key, value) in dict where value > 1 {
print(key)
}
Если я правильно понял суть вопроса, то ваш метод не совсем верен.
Я так понимаю тут нужен аналог поискового движка, который делает фильтрацию по своеобразному весу.
Я сходу пока даже примитивное придумать не могу.
Можно попробовать найти поисковый движок с открытым кодом и посмотреть алгоритмы поиска там, как вариант.
Я бы с удовольствием посмотрел на такое решение ))
Но автор точно указал каков должен быть результат.
В данном случае если смотреть как поисковой движок, то эти 2 элемента массива “Winter Spring Autum” и “Autumn Winter Spring” идентичны.
По хорошему тут нужен человек знающий алгоритмы поиска.
Если бы были ограничения на элементы массива, к примеру максимум по 3 слова, или сам массив не более 100-200 элементов, я бы еще мог что-то придумать за несколько проходов, но это было бы очень не эффективно.
Можно было бы составить карту всех уникальных слов, дать им числовое значение (вес), а дальше как-то это все посчитать (я пока не придумал как )
P.S. пока писал ответ, пришла в голову мысль: если все элементы массива отсортировать по алфавиту, а после просто сравнить на дубликаты.
Надеюсь не это вы имели в виду
это и имелось в виду ))))
разделяем элемент на массив слов и просто сортируем, потом сравниваем