Strong Password

Sort by

recency

|

100 Discussions

|

  • + 0 comments
    def minimumNumber(n, password):
        # Return the minimum number of characters to make the password strong
        numbers = "0123456789"
        lower_case = "abcdefghijklmnopqrstuvwxyz"
        upper_case = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        special_characters = "!@#$%^&*()-+" 
        num = 0
        if len(set(numbers) & set(password)) == 0:
            num+=1
        if len(set(lower_case) & set(password)) == 0:
            num+=1
        if len(set(upper_case) & set(password)) == 0:
            num+=1
        if len(set(special_characters) & set(password)) == 0:
            num+=1
        if n + num < 6:
            num += 6 - num - n
        return num
    
  • + 0 comments

    Python best solution

    If you’re looking for solutions to the 3-month preparation kit in either Python or Rust, you can find them below: my solutions

    def strong_password(n, password: str):
        add_lower = True
        add_upper = True
        add_number = True
        add_special = True
        for letter in password:
            if letter.islower():
                add_lower = False
            if letter.isupper():
                add_upper = False
            if letter.isnumeric():
                add_number = False
            if letter in "!@#$%^&*()-+":
                add_special = False
    
        characters_to_add = 0
        if add_lower:
            characters_to_add += 1
        if add_upper:
            characters_to_add += 1
        if add_number:
            characters_to_add += 1
        if add_special:
            characters_to_add += 1
    
        if len(password) + characters_to_add < 6:
            return 6 - len(password)
    
        return characters_to_add
    
  • + 0 comments

    Rust best solution

    If you’re looking for solutions to the 3-month preparation kit in either Python or Rust, you can find them below: my solutions

    fn strong_password(n: i32, password: &str) -> i32 {
        let special_characters: std::collections::HashSet<char> = "!@#$%^&*()-+".chars().collect();
    
        let mut add_lower = true;
        let mut add_upper = true;
        let mut add_special = true;
        let mut add_number = true;
        for letter in password.chars() {
            if letter.is_uppercase() {
                add_upper = false;
            }
            if letter.is_lowercase() {
                add_lower = false;
            }
            if letter.is_numeric() {
                add_number = false;
            }
            if special_characters.contains(&letter) {
                add_special = false;
            }
        }
    
        let mut characters_to_add: i32 = 0;
    
        if add_lower {
            characters_to_add += 1;
        }
        if add_upper {
            characters_to_add += 1;
        }
        if add_special {
            characters_to_add += 1;
        }
        if add_number {
            characters_to_add += 1;
        }
    
        if (password.len() + characters_to_add as usize) < 6 {
            return 6 - password.len() as i32;
        }
        characters_to_add
    }
    
  • + 0 comments

    Python

    special_characters = "!@#\$%\^&*()\-+"
    patterns = [r'\d', r'[a-z]', r'[A-Z]', rf'[{special_characters}]']
    
    def minimumNumber(n, password):
        res = len([1 for pattern in patterns if not re.search(pattern, password)])
        res += max(0, 6 - (len(password) + res))
        return res
    
  • + 0 comments

    Python 3:

    numbers = {*"0123456789"}
    lower_case = {*"abcdefghijklmnopqrstuvwxyz"}
    upper_case = {*"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}
    special_characters = {*"!@#$%^&*()-+"}
    
    
    def minimumNumber(n: int, password: str) -> int:
        # Return the minimum number of characters to make the password strong
        if n < 3:
            return 6 - n
        characters = {*password}
        return max(
            sum(
                not (characters & char_class)
                for char_class in (numbers, lower_case, upper_case, special_characters)
            ),
            6 - n,
        )