思路:秘钥串整一个 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();
        }
    }
}