- Исполнители
-
Обучение
Учебный центр Python Запускаемые примеры, NumPy, pandas и другое Учебный центр C и C++ Указатели, память, STL и современный C++ Учебный центр C#Основы C#, ООП, LINQ, async и упражнения .NET Алгоритмы на Python Поиск, сортировка, рекурсия и визуализация O(n) Алгоритмы на C и C++ Сравнение реализаций на C и C++
- Задачи
For each requested pattern, decide whether it appears as a contiguous substring anywhere in the shared text. Patterns may overlap and may repeat. Return results in the original query order. The limits require an approach that can handle many patterns efficiently.
Implement find_many_patterns(text, patterns).
Input
text: The text searched by every query.
patterns: The patterns, in query order.
Output
Return YES for each occurring pattern and NO for each absent one.
Ограничения
1…100,000 text characters. 1…100,000 nonempty patterns, with total length at most 500,000. All characters are lowercase a–z.
Примеры
Пример 1
Ввод:
text = "bananas"
patterns = ["ana", "apple", "nas"]
Ожидаемый вывод:
["YES", "NO", "YES"]
Пояснение
Ana appears starting at position 2 and nas at position 5 (positions start at 1 here). Apple never appears.
Пример 2
Ввод:
text = "aaaa"
patterns = ["aa", "aaaaa", "aa"]
Ожидаемый вывод:
["YES", "NO", "YES"]
Пояснение
Aa occurs despite overlapping matches. Five a characters cannot fit in a four-character text. The repeated aa query receives the same answer.
Ссылки
-
Example 1 Не запущеноВвод:
text = "bananas" patterns = ["ana", "apple", "nas"]Ожидаемый вывод:["YES", "NO", "YES"]Ваш вывод -
Example 2 Не запущеноВвод:
text = "aaaa" patterns = ["aa", "aaaaa", "aa"]Ожидаемый вывод:["YES", "NO", "YES"]Ваш вывод
При отправке также выполняются ещё 4 скрытых теста.
Онлайн-компилятор и отладчик C++
Компилируйте и отлаживайте C++ с точками останова, просмотром переменных и пошаговым выполнением GDB в серверном режиме.
🚀 2,389,304 всего выполнений (97,909 в этом месяце)
Практикуйте C++ на задачах
Решайте задачи прямо в редакторе: запускайте тесты, отправляйте решение и получайте AI-рецензию.
Выбрать тему
Изучайте C и C++ вместе на практическом коде: вывод, модель памяти, структуры данных, алгоритмы и современный C++.
💻 Об онлайн-компиляторе C++
Онлайн-компилятор C++ от CodeUtility позволяет писать, компилировать и запускать код прямо в браузере — без установки и настройки компилятора. Он работает в безопасной песочнице и поддерживает реальные стандарты C++ - от C++11, C++14, C++17 и до последней версии.
Этот инструмент использует настоящий компилятор C++, работающий в облаке, чтобы компилировать и выполнять ваш код, обеспечивая точное и единообразное поведение в разных версиях. Вы можете свободно экспериментировать с основами C++ - переменными, функциями, циклами, условиями и объектно-ориентированным программированием.
Готовитесь к собеседованиям, осваиваете современные возможности C++ или проверяете логику алгоритмов - Онлайн-компилятор C++ от CodeUtility предоставляет простую, но мощную среду для мгновенного запуска кода с любого устройства.
Больше, чем средство запуска кода
Используйте в одном исполнителе многофайловый редактор, изолированный терминал выполнения, библиотеки для выбранной среды, постоянные рабочие пространства, общий доступ и совместную работу в реальном времени.
Как пользоваться этим исполнителем?
Выберите среду выполнения, откройте или создайте файл, напишите код и нажмите «Запустить». Результат появится в терминале. Пользователи, вошедшие в систему, могут хранить файлы в рабочем пространстве, устанавливать библиотеки и совместно работать через общие ресурсы.
- Выберите версию и отредактируйте текущий файл или откройте другой файл рабочего пространства.
- Запустите код, при необходимости введите данные в терминале и просмотрите сохранённую историю запусков.
- Используйте библиотеки, инструменты рабочего пространства, общий доступ и чат, когда для задачи требуется несколько фрагментов кода.
💡 Основы C++ и примеры, которые можно попробовать выше
1. Объявление переменных и констант
В C++ необходимо объявлять тип каждой переменной. Используйте const, чтобы определить значения только для чтения, которые нельзя изменить после инициализации.
int age = 30;
double pi = 3.14159;
char grade = 'A';
std::string name = "Alice";
bool isActive = true;
// Константы
const int MAX_USERS = 100;
const std::string COMPANY = "CodeUtility";
// Попытка изменить const приведёт к ошибке компиляции
// MAX_USERS = 200; // ❌ ошибка
2. Условия (if / switch)
Используйте if, else if, else для ветвления. Для множества вариантов используйте switch.
int x = 2;
if (x == 1) {
std::cout << "Один\n";
} else if (x == 2) {
std::cout << "Два\n";
} else {
std::cout << "Другое\n";
}
// switch-case
switch (x) {
case 1:
std::cout << "Один\n";
break;
case 2:
std::cout << "Два\n";
break;
default:
std::cout << "Другое\n";
}
3. Циклы
Используйте for, while и do-while для повторения блоков кода.
for (int i = 0; i < 3; i++) {
std::cout << i << "\n";
}
int n = 3;
while (n > 0) {
std::cout << n << "\n";
n--;
}
4. Массивы
Массивы хранят несколько элементов одного типа.
int numbers[3] = {10, 20, 30};
std::cout << numbers[1] << "\n";
5. Операции с массивами/векторами
Используйте std::vector для динамических массивов.
#include <vector>
std::vector nums = {1, 2, 3};
nums.push_back(4);
nums.pop_back();
for (int n : nums) {
std::cout << n << " ";
}
6. Ввод/вывод в консоль
Используйте std::cin для ввода и std::cout для вывода.
std::string name;
std::cout << "Введите ваше имя: ";
std::cin >> name;
std::cout << "Привет, " << name << "\n";
7. Функции
Функции объединяют переиспользуемую логику. Используйте параметры и возвращаемые типы.
int add(int a, int b) {
return a + b;
}
std::cout << add(3, 4);
8. Отображения (map)
std::map хранит пары ключ-значение, как словарь.
#include <map>
std::map ages;
ages["Alice"] = 30;
std::cout << ages["Alice"];
9. Обработка исключений
Используйте try и catch для обработки ошибок времени выполнения.
try {
throw std::runtime_error("Произошла ошибка");
} catch (const std::exception& e) {
std::cout << e.what();
}
10. Работа с файлами (I/O)
Используйте fstream для чтения и записи файлов.
#include <fstream>
std::ofstream out("file.txt");
out << "Привет, файл";
out.close();
std::ifstream in("file.txt");
std::string line;
getline(in, line);
std::cout << line;
in.close();
11. Работа со строками
Строки C++ поддерживают методы length(), substr() и find().
std::string text = "Привет, мир";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("мир");
12. Классы и объекты
C++ поддерживает объектно-ориентированное программирование с помощью классов.
class Person {
public:
std::string name;
Person(std::string n) : name(n) {}
void greet() { std::cout << "Привет, я " << name; }
};
Person p("Alice");
p.greet();
13. Указатели
Указатель хранит адрес памяти другой переменной. Используйте &, чтобы получить адрес,
и *, чтобы разыменовать (получить значение по адресу).
int x = 10;
int* ptr = &x;
std::cout << "Значение x: " << x << "\n";
std::cout << "Адрес x: " << ptr << "\n";
std::cout << "Значение по указателю: " << *ptr << "\n";
// Изменяем x через указатель
*ptr = 20;
std::cout << "Обновлённый x: " << x << "\n";
🐞 Как отлаживать код %{language} онлайн
Онлайн-отладчик %{language} помогает находить ошибки выполнения и логики без установки компилятора или IDE. Серверный режим компилирует с отладочными символами и запускает программу под GDB.
- Установите точки останова рядом с номерами строк.
- Выберите Debug, чтобы скомпилировать и остановиться в первой подходящей точке.
- Проверьте текущую строку, стек вызовов и переменные.
- Используйте Continue, Step Over, Step Into или Step Out.
- Выберите Stop, чтобы завершить сеанс.
Начните с небольшого воспроизводимого примера и поставьте точку останова перед неожиданным поведением.