题解 | #简单错误记录#
简单错误记录
http://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
这题是在绕口令,玩文字游戏,顺便浪费大家的时间去处理URL,根本没必要处理前缀,只需要处理文件名后十六位就行。 也就是说,不管前面怎么样,只有后十六位文件名和错误数相同,就计数 +1 。
use std::io::{self, *};
fn main() {
let stdin = io::stdin();
let mut v: Vec<(String,i32,i8)>= Vec::new();
for line in stdin.lock().lines() {
let ll = line.unwrap();
let error_line: Vec<&str> = ll.split(" ").collect();
let mut a = String::from(error_line[0]);
let mut b = String::new();
loop {
if let Some(ch) = a.pop() {
if ch == '\\' {
break;
}
b.push(ch);
}
}
while b.len() > 16 {
b.pop();
}
b = b.chars().rev().collect();
let c = error_line[1].trim().parse::<i32>().unwrap_or(0);
if v.len() != 0 {
let mut i = 0usize;
let mut has_abc = false;
while i < v.len() {
if v[i].0 == b && v[i].1 == c {
v[i].2 += 1;
has_abc = true;
break;
}
i += 1;
}
if !has_abc {
v.push((b,c,1i8));
}
}else{
v.push((b,c,1i8));
}
}
if v.len() > 8 {
let l = v.len();
for i in l-8..l {
println!("{} {} {}",v[i].0,v[i].1,v[i].2);
}
}else {
for i in v.iter() {
println!("{} {} {}",i.0,i.1,i.2);
}
}
}
用 Rust 刷华为机试HJ 文章被收录于专栏
用 Rust 刷 HJ100 题,只需要懂基础 Rust 语法就能看懂