AtCoder Beginner Contest 249 B

https://atcoder.jp/contests/abc249/tasks/abc249_b

大文字小文字判定は、is_uppercase/is_lowercaseです。

// Perfect String
#![allow(non_snake_case)]

use std::collections::HashSet;

fn read<T: std::str::FromStr>() -> T {
    let mut line = String::new();
    std::io::stdin().read_line(&mut line).ok();
    line.trim().parse().ok().unwrap()
}

fn is_all_different_chars(S: &String) -> bool {
    let mut s = HashSet::<char>::new();
    for c in S.chars() {
        if s.contains(&c) {
            return false
        }
        s.insert(c);
    }
    return true
}

fn is_perfect(S: &String) -> bool {
    S.chars().any(|c| c.is_lowercase()) &&
    S.chars().any(|c| c.is_uppercase()) &&
    is_all_different_chars(&S)
}

fn main() {
    let S: String = read();
    println!("{}", if is_perfect(&S) { "Yes" } else { "No" });
}