Сложность: easy
Дана строка text и массив строк words, верните массив всех пар индексов [i, j], таких что подстрока text[i...j] находится в words.
Верните пары [i, j] в отсортированном порядке (то есть отсортируйте их по первой координате, а в случае совпадения сортируйте их по второй координате).
Пример:
Input: text = "thestoryofleetcodeandme", words = ["story","fleet","leetcode"]
Output: [[3,7],[9,13],[10,17]]
👨💻 Алгоритм:
1⃣Поддерживайте хэш-набор слов.
2⃣Итерируйте i от 0 до text.length-1. Итерируйте j от i до text.length-1. Если подстрока text[i...j] принадлежит хэш-набору слов, добавьте пару [i, j] в ответ.
3⃣Верните ответ.
😎 Решение:
public class Solution {
public IList<IList<int>> IndexPairs(string text, string[] words) {
var wordsSet = new HashSet<string>(words);
var ans = new List<IList<int>>();
for (int i = 0; i < text.Length; i++) {
for (int j = i; j < text.Length; j++) {
if (wordsSet.Contains(text.Substring(i, j - i + 1))) {
ans.Add(new List<int> { i, j });
}
}
}
return ans;
}
}Ставь 👍 и забирай 📚 Базу знаний