算法要求:
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())
}