Введение
Эй, товарищ читатель! Ищете подробное объяснение этой, казалось бы, простой проблемы LeetCode. Круто 😎, вы пришли в нужное место! Мой метод довольно стандартный, состоит из 4 шагов. Я прочитаю подсказку и примеры, поделюсь своими мыслями и сделаю заметки, а затем шаг за шагом создам решение. Наконец, я предоставлю решение и вынос.
Врываемся в бой…
Подсказка и примеры
Implement themyAtoi(string s)
function, which converts a string to a 32-bit signed integer (similar to C/C++'satoi
function). The algorithm formyAtoi(string s)
is as follows:
Реализуйте функцию myAtoi(string s)
, которая преобразует строку в 32-разрядное целое число со знаком (аналогично функции atoi
в C/C++). Алгоритм для myAtoi(string s)
следующий:
- Прочтите и игнорируйте начальные пробелы.
- Проверьте, является ли следующий символ (если он еще не находится в конце строки)
'-'
или'+'
. Прочтите этот символ, если он есть. Это определяет, будет ли окончательный результат отрицательным или положительным соответственно. Предположим, что результат положительный, если ни один из них не присутствует. - Считайте следующие символы, пока не будет достигнут следующий нецифровой символ или конец ввода. Остальная часть строки игнорируется.
- Преобразуйте эти цифры в целое число (например,
"123" -> 123
,"0032" -> 32
). Если цифры не были прочитаны, то целое число равно0
. При необходимости измените знак (из шага 2). - Если целое число выходит за пределы диапазона 32-разрядных целых чисел со знаком
[-231, 231 - 1]
, зафиксируйте целое число, чтобы оно оставалось в этом диапазоне. В частности, целые числа меньше-231
должны быть сжаты до-231
, а целые числа больше231 - 1
должны быть сжаты до231 - 1
. - Возвращает целое число в качестве окончательного результата.
- Возвращает целое число в качестве окончательного результата.
Первые мысли
Создание решения
Вы могли заметить, что я использовал мясорубку, с которой мы здесь имеем дело. Нам дан вход (мясо), пустая функция (машина) и говяжий фарш, выходящий с другого конца (решение). Именно так я и хотел бы решить эту проблему. Ключевым моментом здесь является понимание того, что должно быть под капотом. Итак, давайте воспользуемся дедукцией и подсказками, чтобы построить эту дробилку!
Заключение
Ссылки