sort исключая пробелы

Рейтинг: 0Ответов: 1Опубликовано: 05.04.2023

У меня есть строка.

string s = "bcd ae fhgd"

надо что бы на выходе было: "abc dd efgh" какой у sort должен быть компаратор для получения такого результата?

Ответы

▲ 1

Как и сказал Stanislav Volodarskiy

Нужна строка без пробелов, её нужно отсортировать, а затем в цикле если символ не пробел заменяем из сортированного, если пробел, то пропускаем

#include <iostream>
#include <algorithm>
#include <string>

int main() {
    std::string input = "bcd ae fhgd";
    std::string output = input;
    std::string sorted = input;
    sorted.erase(std::remove(sorted.begin(), sorted.end(), ' '), sorted.end());
    std::sort(sorted.begin(), sorted.end());
    int j = 0;
    for (int i = 0; i < input.length(); i++) {
        if (output[i] != ' ') {
            output[i] = sorted[j];
            j++;
        }
    }
    std::cout << output << std::endl;
    return 0;
}