carloscn / structstudy

Leetcode daily trainning by using C/C++/RUST programming.
4 stars 1 forks source link

leetcode1859: Sorting the Sentence #297

Open carloscn opened 1 year ago

carloscn commented 1 year ago

Description

A sentence is a list of words that are separated by a single space with no leading or trailing spaces. Each word consists of lowercase and uppercase English letters.

A sentence can be shuffled by appending the 1-indexed word position to each word then rearranging the words in the sentence.

For example, the sentence "This is a sentence" can be shuffled as "sentence4 a3 is2 This1" or "is2 sentence4 This1 a3". Given a shuffled sentence s containing no more than 9 words, reconstruct and return the original sentence.

Example 1:

Input: s = "is2 sentence4 This1 a3" Output: "This is a sentence" Explanation: Sort the words in s to their original positions "This1 is2 a3 sentence4", then remove the numbers.

Example 2:

Input: s = "Myself2 Me1 I4 and3" Output: "Me Myself and I" Explanation: Sort the words in s to their original positions "Me1 Myself2 and3 I4", then remove the numbers.

Constraints:

2 <= s.length <= 200 s consists of lowercase and uppercase English letters, spaces, and digits from 1 to 9. The number of words in s is between 1 and 9. The words in s are separated by a single space. s contains no leading or trailing spaces.

carloscn commented 1 year ago

Analysis

use std::ops::Add;

pub fn sort_sentence(s: &str) -> String
{
    if s.len() == 0 {
        return s.to_string();
    }

    let mut s_vec:Vec<(char, String)> = vec![];
    for e in s.split(" ") {
        let c:char;
        let st:String;
        let sv:Vec<char> = e.chars().collect();
        c = sv[sv.len() - 1];
        st = sv.iter().filter(|x| x.is_alphabetic()).collect();
        s_vec.push((c, st));
    }

    s_vec.sort();

    let mut ret:String = String::new();

    for e in s_vec {
        ret += &e.1;
        ret += " ";
    }

    ret.remove(ret.len() - 1);

    return ret;
}
carloscn commented 1 year ago

Code

https://review.gerrithub.io/c/carloscn/structstudy/+/557330 https://github.com/carloscn/structstudy/commit/4821c053788399e82e2ccf0392e2b7daa4796ee7