Переписывание функции экранирования символов

Показанный алгоритм уже корректно обходит исходную строку и добавляет слеш перед каждым совпадением. Утверждение о неправильном обходе не подтверждается этим фрагментом.

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

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

Показанный алгоритм уже корректно обходит исходную строку и добавляет слеш перед каждым совпадением. Утверждение о неправильном обходе не подтверждается этим фрагментом.

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

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

Условие

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

std::string mark_char(const std::string& src, char target) {
    if (src.empty()) {
        return "";
    }

    std::string out;
    for (char ch : src) {
        if (ch == target) {
            out += '\\';
        }
        out += ch;
    }

    return out;
}

Ответ

Показанный алгоритм уже корректно обходит исходную строку и добавляет слеш перед каждым совпадением. Утверждение о неправильном обходе не подтверждается этим фрагментом.

Можно лишь упростить пустой случай и заранее зарезервировать минимальный объём:

std::string mark_char(const std::string& src, char target) {
    std::string out;
    out.reserve(src.size());
    for (char current : src) {
        if (current == target) out.push_back('\\');
        out.push_back(current);
    }
    return out;
}

Пустой вход естественно даёт пустой выход. Исходник не изменяется, а вставленные слеши не обходятся повторно. При target, равном слешу, каждый исходный слеш удваивается. Это посимвольное байтовое преобразование, не универсальное экранирование для всех форматов.

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

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

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

Подробнее