Работа со строками и std контейнерами
Темы для прохождения на данной лабе
- Простые задачи на работу со строками std::string.
- Использование стандартных контейнеров vector, list, queue, stack, deque.
- Задача на очереди из ЕГЭ.
- Проверка корректности скобочной последовательности. (С одним видом скобок и с несколькими видами скобок.)
Задачи для будущего контеста
Контест с автопроверкой задач к сожалению пока не готов. Under construction...
Задачи от Ольги Архангельской
Задача 1
Просумировать два двоичных числа.
На вход подаются две строки вида a = "1010", b = "1011"
Выход: "10101"
Строки могут быть очень длинными (до 1000 символов длиной).
Задача 2
Дан массив целых чисел
nums
(в формеstd::vector<int>
) и заданное числоN
. Требуется подобрать из этого массива четыре элемента так, чтобы их сумма равняласьN
. То есть:nums[i] + nums[j] + nums[k] + nums[z] == N
.Вернуть первый подходящий набор чисел исходного массива, состояий из таких чисел. Внимание! Вернуть первый подходящий результат
Формат входных данных
Функция должна принимать на вход 2 аргумента:
std::vector<int> nums
,N
. Заголовок функции:void findArrayQuadruplet(std::vector<int> &nums, int N)
,где
nums
-- исходный массив,N
-- заданное чисо.Функцию
main()
в данной задаче описывать не нужно!Формат выходных данных
Функция должна возвращать
std::vector<int>
длины ровно 4:vector<int> {nums[i], nums[j], nums[k], nums[z]}
. Если подходящего набора чисел в исходном массиве нет, ваша функция должна вернуть пустойstd::vector
.Пример входных-выходных данных:
-> [2, 7, 4, 0, 9, 5, 1, 3]
-> 20
--
<- [0, 4, 7, 9]
Задача 3
Сбалансированные подстроки
Дана сбалансированная строка, (Та в которой количество L и R символов равны).
Необходимо разделить ее на максимальное количество сбалансированных подстрок
и вернуть их количество.
Вход: s = "RLRRLLRLRL"
Выход: 4 ("RL", "RRLL", "RL", "RL")
Задача 4
Число записано в виде вектора (дан именно std::vector), необходимо добавить к нему единицу.
Пример:
-> [1,2,3]
<- [1,2,4]
-> [9,9,9]
<- [1, 0, 0, 0]
Задача 5
Дан массив интервалов в форме вектора пар std::vector<std::pair<double, double>>.
В данном списке первые числа идут по возрастанию ("неубыванию").
Требуется объединяем пересекающиеся.
Пример:
Вход: [[1, 3], [2, 6], [8, 10], [15, 18]]
Выход: [[1, 6], [8, 10], [15, 18]]
Пояснение: [1,3] и [2,6] пересекаются, объединяем их в [1, 6].
Задача 6
Сравнить две версии, если v1 > v1 вернуть 1, v1 < v2 вернуть -1, если равны то 0. (игнорирую лидирующие нули)
Примеры:
Вход: version1 = "0.1", version2 = "1.1"
Выход: -1
Вход: version1 = "1.01" version2 = "1.001"
Выход: 0
Вход: version1 = "7.5.2.4", version2 = "7.5.3"
Выход: -1