UniLecs #Task. String to Int

Albert Davletov
UniLecs
Published in
2 min readJan 27, 2020

--

Задача: необходимо реализовать функцию преобразования строки в целое число.

Алгоритм следующий: функция сначала отбрасывает необходимое количество пробелов до момента, пока не будет найден первый непробельный символ. Дальше, начиная с этого символа, принимает необязательный начальный знак (плюс или минус), за которым следует столько цифр, сколько возможно, и интерпретирует их как числовое значение.

Примечания:

  • Строка также может содержать дополнительные символы после тех, которые образуют целое число, которые игнорируются и не влияют на поведение функции.
  • Если же первая последовательность непробельных символов в строке не является допустимым целым числом или если такой последовательности не существует (либо строка пуста, либо содержит только пробельные символы) преобразование не выполняется.
  • Если преобразование не может быть выполнено, возвращается нулевое значение.

Входные данные: строка

Вывод: целое число, диапазон этого числа [-2³¹, 2³¹ — 1]. Если результат выходит за этот диапазон, выводите пограничное значение.

Примеры:

1. “14”

Output: 14

2. “ -14”

Output: -14

3. “14 lorem ipsum”

Output: 14

4. “lorem ipsum 14”

Output: 0

Разбор

Алгоритм функции следующий:

  1. Проверяем входную строку: пустая или строка, ктр содержит только пробелы.
  2. Проверяем 1й непробельный символ на наличие знака (+/-).
  3. Парсим остальные символы и формируем результирующее число.
  4. Добавляем знак, если он был обнаружен.
  5. Проверяем пограничные значения входного диапазона [int.Min, int.Max].
  6. Вывод числа.

Детали реализации смотрите ниже.

Реализация

C#
C#

https://gist.github.com/unilecs/ecd1c0902b561810a26399ec60a634c8

Play-test

https://dotnetfiddle.net/Zel2GX

--

--