UniLecs #Task. String to Int
Задача: необходимо реализовать функцию преобразования строки в целое число.
Алгоритм следующий: функция сначала отбрасывает необходимое количество пробелов до момента, пока не будет найден первый непробельный символ. Дальше, начиная с этого символа, принимает необязательный начальный знак (плюс или минус), за которым следует столько цифр, сколько возможно, и интерпретирует их как числовое значение.
Примечания:
- Строка также может содержать дополнительные символы после тех, которые образуют целое число, которые игнорируются и не влияют на поведение функции.
- Если же первая последовательность непробельных символов в строке не является допустимым целым числом или если такой последовательности не существует (либо строка пуста, либо содержит только пробельные символы) преобразование не выполняется.
- Если преобразование не может быть выполнено, возвращается нулевое значение.
Входные данные: строка
Вывод: целое число, диапазон этого числа [-2³¹, 2³¹ — 1]. Если результат выходит за этот диапазон, выводите пограничное значение.
Примеры:
1. “14”
Output: 14
2. “ -14”
Output: -14
3. “14 lorem ipsum”
Output: 14
4. “lorem ipsum 14”
Output: 0
Разбор
Алгоритм функции следующий:
- Проверяем входную строку: пустая или строка, ктр содержит только пробелы.
- Проверяем 1й непробельный символ на наличие знака (+/-).
- Парсим остальные символы и формируем результирующее число.
- Добавляем знак, если он был обнаружен.
- Проверяем пограничные значения входного диапазона [int.Min, int.Max].
- Вывод числа.
Детали реализации смотрите ниже.
Реализация
https://gist.github.com/unilecs/ecd1c0902b561810a26399ec60a634c8