Rust: Descending Order

算法,容易的要命。

如下:

Input: 21445 Output: 54421 # 排序输出

Input: 145263 Output: 654321

Input: 1254859723 Output: 9875543221

一、
1.0 :六行大代码

fn descending_order(x: u64) -> u64 {
    let mut data: Vec<i64> = x.to_string()
        .chars()
        .map(|x| (x.to_string()).parse::<i64>().unwrap())
        .collect::<Vec<i64>>();
    data.sort_by(|a, b| b.cmp(a));
    let data2: Vec<String> = data.iter().map(|&x| x.to_string()).collect();
    let mut data3: String = "".to_string();
    data2
        .into_iter()
        .map(|x| data3.push_str(&x))
        .collect::<Vec<_>>();
    data3.parse::<u64>().unwrap()
}

2.0 :四行大代码

fn descending_order(x: u64) -> u64 {
    let mut data: Vec<i64> = x.to_string()
        .chars()
        .map(|x| (x.to_string()).parse::<i64>().unwrap())
        .collect::<Vec<i64>>();
    data.sort_by(|a, b| b.cmp(a));
    let data2: Vec<String> = data.iter().map(|&x| x.to_string()).collect();
    data2
        .into_iter()
        .fold("".to_string(), |s, x| s + &x)
        .parse::<u64>()
        .unwrap()
}

3.0 : 三行大代码

fn descending_order(x: u64) -> u64 {
    let mut data: Vec<i64> = x.to_string()
        .chars()
        .map(|x| (x.to_string()).parse::<i64>().unwrap())
        .collect::<Vec<i64>>();
    data.sort_by(|a, b| b.cmp(a));
    data.iter()
        .fold("".to_string(), |s, x| s + &(x.to_string()))
        .parse::<u64>()
        .unwrap()
}

二、String::from_iter()

use std::iter::FromIterator;
fn descending_order(x: u64) -> u64 {
    let mut result = x.to_string().chars().collect::<Vec<char>>();
    result.sort_by(|a, b| b.cmp(a));
    String::from_iter(result).parse::<u64>().unwrap()
}

三、

fn descending_order(x: u64) -> u64 {
    let mut chars: Vec<char> = x.to_string().chars().collect();
    chars.sort_by(|a, b| b.cmp(a));
    chars.into_iter().collect::<String>().parse().unwrap()
}

四、u64::from_str

use std::str::FromStr;

fn descending_order(x: u64) -> u64 {
    let mut chars = x.to_string().chars().collect::<Vec<char>>();
    chars.sort_by(|a, b| b.cmp(a));
    u64::from_str(&chars.iter().cloned().collect::<String>()).unwrap()
}

五、

fn descending_order(x: u64) -> u64 {
    let mut v = x.to_string().chars().collect::<Vec<char>>();
    v.sort_by(|a,b| b.cmp(a));
    v.iter().cloned().collect::<String>().parse::<u64>().unwrap()
}

六、

fn descending_order(x: u64) -> u64 {
  let mut v = x.to_string().chars().collect::<Vec<char>>();
  v.sort_by(|&a, &b| a.cmp(&b).reverse());
  v.into_iter().collect::<String>().parse().unwrap()
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值