Si tengo una cadena, ¿hay una función incorporada para ordenar los caracteres o tendría que escribir la mía propia?
por ejemplo:
string word = "dabc";
Me gustaría cambiarlo para que:
string sortedWord = "abcd";
¿Quizás usar char es una mejor opción? ¿Cómo haría esto en C ++?
std::sort
?Respuestas:
Hay un algoritmo de clasificación en la biblioteca estándar, en el encabezado
<algorithm>
. Se ordena en su 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());
fuente
std::sort
ordena en orden alfabético creciente de forma predeterminada. Suponiendo que es un error tipográfico de menor importancia y que desea de orden plegado, utilice la versión destd::sort
que toma unaCompare
como su tercer argumento y el suministrostd::greater
en lugar del predeterminadostd::less
.std::string
usa elchar
tipo por defecto, por ejemplostd::sort(sortedWord.begin(), sortedWord.end(), std::greater<char>());
, eso daría un resultado de "dcba" en la pregunta original en lugar de "abcd".std::sort(str.begin(), str.end());
Ver aqui
fuente
Debe incluir la
sort
función que se encuentra en elalgorithm
archivo de encabezado, que es una 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; }
SALIDA:
fuente
Puede utilizar la función sort () . sort () existe en el archivo de encabezado del algoritmo
#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; }
Salida:
fuente