Rust: 逆序输出&str

来源:互联网 发布:手机数据可以恢复吗 编辑:程序博客网 时间:2024/06/02 13:12

逆序输出,本来是很简单的。

比如:对于一个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]) } }