Rust: codewars的Highest and Lowest

来源:互联网 发布:数据发掘入门书籍 编辑:程序博客网 时间:2024/06/01 07:30

算法要求:
HighAndLow(“1 2 3 4 5”); // return “5 1”
HighAndLow(“1 2 -3 4 5”); // return “5 -3”
HighAndLow(“1 9 3 4 -5”); // return “9 -5”

题目非常容易,这里主要是要看一下rust中有些用法。parse()、from_str(),split(),split_whitespace()等。

一、我的解法

fn high_and_low(numbers: &str) -> String {    let data: Vec<i32> = numbers.split(' ')        .into_iter()        .map(|x| x.parse::<i32>().unwrap())        .collect();    println!("data :{:?}", data);    [data.iter().max().unwrap().to_string(), data.iter().min().unwrap().to_string()].join(" ")}

二、精彩的解法

1、

fn high_and_low(numbers: &str) -> String {  let n = String::from(numbers);  let vect :Vec<i32>= n.split_whitespace().map(|x| x.parse::<i32>().unwrap()).collect();  let low = vect.iter().min().unwrap();  let high = vect.iter().max().unwrap();  format!("{} {}", high, low)}

2、

use std::str::FromStr;fn high_and_low(numbers: &str) -> String {    let numbers: Vec<i32> = numbers.split_whitespace()        .map(|s| i32::from_str(s).unwrap())        .collect();  format!("{} {}", numbers.iter().max().unwrap(), numbers.iter().min().unwrap())}
原创粉丝点击