Конвертация целого числа в строковое представление

Извлекайте цифры остатком от деления и записывайте с конца буфера. Отрицательное представление позволяет обработать MinInt без переполнения.

Короткий ответ

Что ответить на собеседовании

Извлекайте цифры остатком от деления и записывайте с конца буфера. Отрицательное представление позволяет обработать MinInt без переполнения.

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте функцию, которая преобразует целочисленное значение (int) в его десятичную строковую форму (string). При решении нельзя пользоваться готовыми функциями преобразования, такими как strconv.Itoa, fmt.Sprintf и аналогичными. Кроме того, использование strings.Builder тоже запрещено. Пример: 123 → "123"

func intToString(n int) string {
    // реализуй
}

Ответ

Извлекайте цифры остатком от деления и записывайте с конца буфера. Отрицательное представление позволяет обработать MinInt без переполнения.

Реализация без импортов:

func intToString(n int) string {
    if n == 0 { return "0" }
    negative := n < 0
    if n > 0 { n = -n }
    var buffer [20]byte
    pos := len(buffer)
    for n != 0 {
        pos--
        buffer[pos] = byte('0' - n%10)
        n /= 10
    }
    if negative {
        pos--
        buffer[pos] = '-'
    }
    return string(buffer[pos:])
}

Буфера хватает для 32- и 64-битного int со знаком. Не берём положительный модуль отрицательного MinInt: он не представим в том же типе. Время пропорционально числу цифр, рабочая память фиксирована.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее