题解 | #字符串加密#

字符串加密

http://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3

思路:秘钥串整一个 key 数组存完秘钥串不重复字符后,统一变小写,再补存剩余字符。 对待加密字符串在遍历时进行识别大小后根据位置 push 相应大小写字符进 v

代码:

use std::io::{self, *};

fn main() {
    let stdin = io::stdin();
    let mut is_first = true;
    let mut key = Vec::new();
    for line in stdin.lock().lines() {
        let ll = line.unwrap();
        if is_first {
            for i in ll.into_bytes() {
                if !key.contains(&i){
                    key.push(i);
                }
            }
            for i in key.iter_mut(){
                if *i < 97u8 {
                    *i += 32u8;
                }
            }
            for i in 97..123u8 {
                if !key.contains(&i){
                    key.push(i);
                }
            }
            is_first = false;
        }else{
            let mut v = Vec::new();
            for i in ll.into_bytes() {
                v.push(match i {
                    65..=90 => key[i as usize - 65] - 32,
                    97..=122 => key[i as usize - 97],
                    _ => 0u8,
                });
            }
            println!("{}",String::from_utf8(v).unwrap());
            is_first = true;
            key.clear();
        }
    }
}
用 Rust 刷华为机试HJ 文章被收录于专栏

用 Rust 刷 HJ100 题,只需要懂基础 Rust 语法就能看懂

全部评论
该牛油正在参与牛客写题解薅羊毛的活动,牛币,周边,京东卡超多奖品放送,活动进入倒计时!快来捡漏啦https://www.nowcoder.com/discuss/888949?source_id=profile_create_nctrack&channel=-1
点赞 回复 分享
发布于 2022-04-27 11:46

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务