Сложность: medium
Вам дан массив строк products и строка searchWord. Разработайте систему, которая предлагает не более трех названий продуктов после ввода каждого символа searchWord. Предлагаемые товары должны иметь общий префикс с searchWord. Если есть более трех продуктов с общим префиксом, возвращаются три лексикографически минимальных продукта. Возвращается список списков предложенных продуктов после ввода каждого символа searchWord.
Пример:
Input: products = ["havana"], searchWord = "havana"
Output: [["havana"],["havana"],["havana"],["havana"],["havana"],["havana"]]
👨💻 Алгоритм:
1⃣Отсортируйте массив продуктов.
2⃣Итерируйтесь по каждому символу в searchWord, находите все продукты, которые соответствуют текущему префиксу.
3⃣Сохраняйте не более трех лексикографически минимальных продуктов для каждого префикса.
😎 Решение:
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution {
public IList<IList<string>> SuggestedProducts(string[] products, string searchWord) {
Array.Sort(products);
var result = new List<IList<string>>();
var prefix = "";
foreach (var c in searchWord) {
prefix += c;
var suggestions = products.Where(p => p.StartsWith(prefix)).Take(3).ToList();
result.Add(suggestions);
}
return result;
}
}
Ставь 👍 и забирай 📚 Базу знаний