исходный код | Гитхаб

10. Сопоставление регулярных выражений

Имея входную строку s и шаблон p, реализуйте сопоставление регулярных выражений с поддержкой '.' и '*', где:

  • '.' Соответствует любому одиночному символу.​​​​
  • '*' Соответствует нулю или более предшествующих элементов.

Сопоставление должно охватывать всю входную строку (не частично).

Пример 1:

Input: s = "aa", p = "a"
Output: false
Explanation: "a" does not match the entire string "aa".

Пример 2:

Input: s = "aa", p = "a*"
Output: true
Explanation: '*' means zero or more of the preceding element, 'a'. Therefore, by repeating 'a' once, it becomes "aa".

Пример 3:

Input: s = "ab", p = ".*"
Output: true
Explanation: ".*" means "zero or more (*) of any character (.)".

Ограничения:

  • 1 <= s.length <= 20
  • 1 <= p.length <= 30
  • s содержит только строчные английские буквы.
  • p содержит только строчные латинские буквы, '.' и '*'.
  • Гарантируется, что для каждого появления символа '*' будет соответствовать предыдущий допустимый символ.

11. Контейнер с наибольшим количеством воды

Вам дан массив целых чисел height длины n. Нарисовано n вертикальных линий, так что двумя конечными точками линии ith являются (i, 0) и (i, height[i]).

Найдите две линии, которые вместе с осью абсцисс образуют контейнер, содержащий наибольшее количество воды.

Возвращает максимальное количество воды, которое может храниться в контейнере.

Обратите внимание, что вы не можете наклонять контейнер.

Пример 1:

Input: height = [1,8,6,2,5,4,8,3,7]
Output: 49
Explanation: The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.

Пример 2:

Input: height = [1,1]
Output: 1

Ограничения:

  • n == height.length
  • 2 <= n <= 105
  • 0 <= height[i] <= 104

12. Целое число в римское

Римские цифры представлены семью различными символами: I, V, X, L, C, D и M.

Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

Например, 2 записывается как II римскими цифрами, просто две единицы складываются вместе. 12 записывается как XII, то есть просто X + II. Число 27 записывается как XXVII, то есть XX + V + II.

Римские цифры обычно пишутся слева направо от большего к меньшему. Однако цифра четыре не IIII. Вместо этого цифра четыре записывается как IV. Так как единица предшествует пятерке, мы вычитаем ее и получаем четыре. Тот же принцип применим к числу девять, которое записывается как IX. Есть шесть случаев, когда используется вычитание:

  • I можно поставить перед V (5) и X (10), чтобы получились 4 и 9.
  • X можно поставить перед L (50) и C (100), чтобы получилось 40 и 90.
  • C можно поставить перед D (500) и M (1000), чтобы получилось 400 и 900.

Дано целое число, преобразовать его в римскую цифру.

Пример 1:

Input: num = 3
Output: "III"
Explanation: 3 is represented as 3 ones.

Пример 2:

Input: num = 58
Output: "LVIII"
Explanation: L = 50, V = 5, III = 3.

Пример 3:

Input: num = 1994
Output: "MCMXCIV"
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.

Ограничения:

  • 1 <= num <= 3999