Информация об изменениях

Сообщение replace от 04.12.2021 18:35

Изменено 04.12.2021 18:36 avovana

Re: replace
// написать функцию replace c 3-мя входными аргументами, возвращающую новую строку
//
// список аргументов:
// 1 - входная строка
// 2 - что ищем во входной строке
// 3 - чем заменяем
//
// примеры выполнения:
// replace("aabbcc", "b", "B")    -> "aaBBcc"
// replace("aabbcc", "bb", "B")   -> "aaBcc"
// replace("aabbbcc", "bb", "B")  -> "aaBbcc"
// replace("aabbcc", "b", "BB")   -> "aaBBBBcc"


std::string replace(std::string input, std::string substr, std::string replace_to) {
    std::string res;
    int idx_of_substr = 0;
    ind end_idx_copied = 0;

    for(int i = 0; i < input.size(); ++i) {
        idx_of_substr = input.find(substr, idx_of_substr);
        if(idx_of_substr != std::string::npos) {
            res.append(input.substr(end_idx_copied, idx_of_substr));
            res.append(replace_to);

            i = i + substr.size() - 1;
            end_idx_copied = i;
        }
    }

    res.append(input.substr(end_idx_copied, input.size() - 1));
}


Сначала сам стал пытаться реализовать поиск substr. Подсказали, что можно взять готовую.
Успел основное решение. Еще краевой случай, чтобы индекс не вышел за границу.
replace
// написать функцию replace c 3-мя входными аргументами, возвращающую новую строку
//
// список аргументов:
// 1 - входная строка
// 2 - что ищем во входной строке
// 3 - чем заменяем
//
// примеры выполнения:
// replace("aabbcc", "b", "B")    -> "aaBBcc"
// replace("aabbcc", "bb", "B")   -> "aaBcc"
// replace("aabbbcc", "bb", "B")  -> "aaBbcc"
// replace("aabbcc", "b", "BB")   -> "aaBBBBcc"


std::string replace(std::string input, std::string substr, std::string replace_to) {
    std::string res;
    int idx_of_substr = 0;
    ind end_idx_copied = 0;

    for(int i = 0; i < input.size(); ++i) {
        idx_of_substr = input.find(substr, idx_of_substr);
        if(idx_of_substr != std::string::npos) {
            res.append(input.substr(end_idx_copied, idx_of_substr));
            res.append(replace_to);

            i = i + substr.size() - 1;
            end_idx_copied = i;
        }
    }

    res.append(input.substr(end_idx_copied, input.size() - 1));
}


Сначала сам стал пытаться реализовать поиск substr. Подсказали, что можно взять готовую.
Успел основное решение. Еще краевой случай, чтобы индекс не вышел за границу.