题解 | #找出字符串中第一个只出现一次的字符#
找出字符串中第一个只出现一次的字符
http://www.nowcoder.com/practice/e896d0f82f1246a3aa7b232ce38029d4
解题思路:
Vec
+ HashMap
,数组用来存储每种字符的单个样例以保证顺序,HashMap用来存储每个字符的个数,按Vec
顺序查询对应字符个数,遇见单个则立即输出,最后验证是否全不为单个。
use std::collections::HashMap;
use std::io::{self, *};
fn main() {
let stdin = io::stdin();
for line in stdin.lock().lines() {
let ll = line.unwrap();
let mut hm: HashMap<u8, u8> = HashMap::new();
let mut v = vec![];
for i in ll.trim().as_bytes() {
if !v.contains(i) {
v.push(*i);
}
if hm.contains_key(i){
if let Some(value) = hm.get_mut(i) {
*value += 1;
}
}else {
hm.insert(*i, 1);
}
}
let mut k = 0;
for i in v.iter() {
if let Some(num) = hm.get(i){
if *num == 1 {
println!("{}",char::from(*i));
break;
}
}
k += 1;
}
if k == v.len() {
println!("-1");
}
}
}
用 Rust 刷华为机试HJ 文章被收录于专栏
用 Rust 刷 HJ100 题,只需要懂基础 Rust 语法就能看懂