Как создать функцию, которая будет фильтровать данный массив

Как создать функцию, которая потребует массив строк с двумя аргументами и строку в качестве ключа, которая будет фильтровать данный массив по переданному ключу аргумента (String), если элемент массива содержит не менее 3 символов переданного аргумента, будет отфильтрован, результат печати , если результата нет, необходимо вывести «нет результата» в виде текста.

если элемент массива содержит не менее 3 символов переданного аргумента Именно это строка никак не получается.Есть кто знает как можно сделать

fun main() {
    val myArray = arrayOf("akaio","huise","seoli")
    val word = "aka"
   arrCheck(myArray,word)
 /*   arrFilter1(myArray,word)*/
}

//Simple way to check if array contains a word
fun arrCheck(arr: Array<String>, ex: String) {
    for (i in arr) {
        if (i.contains(ex)) {
            val filteredArray = arr.filterNot { it == ex }
            println(filteredArray)
        }else
            println("No Result")

    }
}

Ответы (1 шт):

Автор решения: Sergey Rufanov

Если вам требуется среди списка слов найти все слова, в которых будут присутствовать абсолютно все буквы из искомого слова(включая не уникальные вхождения), то можно сделать как-то так:

val found = arr.filter { word ->
    val startIndexes = mutableMapOf<Char, Int>()
    !ex.any() { c ->
        startIndexes[c] = word.indexOf(c, startIndexes.getOrDefault(c, -1)+1)
        startIndexes[c] == -1
    }
}

println(if (found.isNotEmpty()) found else "Not found")

Если же нужно найти строки длинной больше 3 символов, у которых начало совпадает с первыми 3-мя символами переданного слова, то все проще:

val found = arr.filter { it.length > 3 && it.startsWith(ex.substring(0, 3)) }
→ Ссылка