Ordenar caracteres de una cadena C++

2 minutos de lectura

Si tengo una cadena, ¿hay una función integrada para ordenar los caracteres o tendría que escribir la mía?

por ejemplo:

string word = "dabc";

Me gustaría cambiarlo para que:

string sortedWord = "abcd";

¿Tal vez usar char es una mejor opción? ¿Cómo haría esto en C++?

  • Qué pasa std::sort?

    – sueño relajado

    2 de febrero de 2012 a las 5:21

  • Tenga en cuenta que cualquier tipo de clasificación ingenua basada en valores de caracteres se rompe con UTF-8; dependiendo de sus cadenas, es posible que desee tener en cuenta la configuración regional.

    – Christian Severín

    17 de noviembre de 2017 a las 10:44

Hay un algoritmo de clasificación en la biblioteca estándar, en el encabezado <algorithm>. Se ordena en el lugar, por lo que si hace lo siguiente, su palabra original se ordenará.

std::sort(word.begin(), word.end());

Si no quiere perder el original, primero haga una copia.

std::string sortedWord = word;
std::sort(sortedWord.begin(), sortedWord.end());

  • ¿Qué pasa si queremos que la cadena se clasifique en orden creciente?

    – El cuarto

    16 de junio de 2017 a las 14:09

  • @madhuspot std::sort ordena en orden alfabético creciente de forma predeterminada. Supongamos que es un error tipográfico menor y desea Delawareorden de plegado, utilice la versión de std::sort eso toma un Compare como su tercer argumento y suministro std::greater en lugar del predeterminado std::less. std::string usa el char escriba por defecto, por ejemplo std::sort(sortedWord.begin(), sortedWord.end(), std::greater<char>()); — eso daría como resultado “dcba” en la pregunta original en lugar de “abcd”.

    – tommy

    10 de julio de 2017 a las 0:19


  • @madhuspot o usa std::reverse

    – Vicente

    30 de enero de 2018 a las 18:18

std::sort(str.begin(), str.end());

Ver aquí

  • Esta es la mejor manera… SI la cadena está usando una codificación de un solo byte. De lo contrario, dividirá los caracteres en sus bytes componentes.

    – Ben Voigt

    2 de febrero de 2012 a las 5:34

avatar de usuario
abe312

tienes que incluir sort función que está en algorithm archivo de encabezado que es un biblioteca de plantillas estándar en C++.

Uso: std::sort(str.begin(), str.end());

#include <iostream>
#include <algorithm>  // this header is required for std::sort to work
int main()
{
    std::string s = "dacb";
    std::sort(s.begin(), s.end());
    std::cout << s << std::endl;

    return 0;
}

PRODUCCIÓN:

abcd

Puedes usar clasificar() función. sort() existe en algoritmo archivo de cabecera

        #include<bits/stdc++.h>
        using namespace std;


        int main()
        {
            ios::sync_with_stdio(false);
            string str = "sharlock";

            sort(str.begin(), str.end());
            cout<<str<<endl;

            return 0;
        }

Producción:

achklors

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad