2017-03-11 1 views
-1

Ich habe die Zeichenfolge "laxmi" und ich muss es in absteigender alphabetischer Reihenfolge sortieren und "xmlia" produzieren. Ich habe dies geschrieben:Wie kann ich die Zeichen einer Zeichenkette in Rust sortieren?

fn main() { 
    let wordy: String = "I am a hello world example"; 

    let chars: Vec<char> = wordy.chars().vector(); 
    chars.sort_by(|a, b| b.cmp(a)); 

    // let s: String = chars.into_iter().collect(); 
    println!("test{:?}", chars); 
    let s = String::from_iter(chars); 
    println!("{}", s); 
} 

Dies funktioniert nur, wenn wordy ein &str ist, aber ich habe eine String. Wie kann ich die String in einen Vektor von char konvertieren, damit ich die Zeichenfolge sortieren kann?

+0

Dies ist nicht einmal gültigen Code, so sehe ich nicht, wie Sie sagen können "das funktioniert nur ...". Es erzeugt mehrere Fehler: * nicht übereinstimmende Typen *; * Keine Methode namens 'vector' gefunden für den Typ' std :: str :: Chars <'_> '*; * kein zugehöriges Element namens 'from_iter' gefunden für den Typ' std :: string :: String' *. Überprüfen Sie, wie Sie [MCVE] erstellen, wenn Sie eine Frage zu Stack Overflow stellen. – Shepmaster

Antwort

2

Ich tat dies und bekam die gewünschte Ausgabe. Dies ist jedoch möglicherweise nicht der beste Weg.

use std::iter::Iterator; 
use std::iter::FromIterator; 

fn main() { 
    let wordy: String = "I am a hello world example".to_owned(); 
    let s_slice: &str = &wordy[..]; 

    let mut chars: Vec<char> = s_slice.chars().collect(); 
    chars.sort_by(|a, b| b.cmp(a)); 

    println!("test{:?}", chars); 
    let s = String::from_iter(chars); 
    println!("{}", s); 
} 
+0

@Shempmaster Ich weiß nicht, wie Sie diesen Fehler bekommen haben. aber ich bekomme die korrekte Ausgabe ohne Fehler. Das gesamte Programm mit Kopfzeilen wird in der Antwort bearbeitet. und ich kann das Programm ohne Fehler kompilieren. Möglicherweise haben Sie die Verwendung von std :: iter :: FromIterator verpasst; Header. – user5335302

+1

Ich habe den Fehler erhalten, indem ich den Code kopiert und ausgeführt habe. Da Sie nicht das gesamte gültige Beispiel angegeben haben, ist ein Fehler aufgetreten. Wenn Sie ** den Code nicht zur Verfügung stellen, wie würde sonst jemand, der sich die Antwort ansieht, wissen, was er verwenden soll? – Shepmaster

Verwandte Themen