逆序输出,本来是很简单的。
比如:对于一个vector(), 可以用reverse().
let mut r = [1, 2, 3];
r.reverse(); # r =[3,2,1]
let mut s = ["a","b","c"];
s.reverse(); # s =["c","b","a"]
但需要注意!!!!
let mut s = ["a","b","c"]; # [1,2,3]也一样!
let vs =s.reverse(); # vs =();
一、对于“world”=>”dlrow”?
是否可用reverse()? 不可以直接用。
let s = "abcd".to_string(); #或 s="abcd"也一样。
s.reverse();# error!
rev()? 情况也一样。
let s = "abcd".to_string(); #或 s="abcd"也一样。
s.rev();# error!
1、笨办法
fn solution(phrase: &str) -> String {
let data = phrase
.chars()
.into_iter()
.map(|x| x.to_string())
.collect::<Vec<_>>();
let len = data.len();
let mut v: Vec<String> = Vec::new();
for i in 0..len {
let temp = data.get(len - i - 1).unwrap();
v.push(temp.to_string());
}
let r = v.join("");
r.to_string()
}
2、简洁的方法
fn solution(phrase: &str) -> String {
phrase.chars().rev().collect()
}
二、rev()、reverse() 对于&str
关于rev()的用法
let s = "abcd";
let rs = s.chars().rev();
#let rs = s.chars().reverse(); # =>error!
println!("rev2 :{:?}", rs);
运行结果:
rev2 :Rev { iter: Chars { iter: Iter([97, 98, 99, 100]) } }