Related Articles

Related Articles

Minimum characters required to make a password strong
  • Difficulty Level : Easy
  • Last Updated : 19 Oct, 2020

Given string str denoting a password, the task is to count the minimum characters that need to be added to make the password strong
A password is said to be strong if it satisfies the following criteria: 

  • It contains at least 8 characters.
  • It contains at least one digit.
  • It contains at least one lower case alphabet.
  • It contains at least one upper case alphabet.
  • It contains at least one special character which includes !@#$%^&*()-+

Examples: 

Input: str = “Geeksforgeeks” 
Output:
Explanation: 
By adding one digit and one special character we can make the password strong.
Input: str = “Geeks1” 
Output:
Explanation: 
A special character along with one more character needs to be added to make the password strong. 

Approach: This problem can be solved using Regular Expressions

  • Create the regular expressions to check digit, special character, upper case, and lower case alphabet.
  • Compile the regular expressions and find matches with the password string.
  • Increase the counter, say, count, to add characters whenever any of the regular expression does not match.
  • After adding count characters to the password string, check if the length of the string is less than 8 or not. If so, add the difference to count and print.

Below is the implementation of the above approach. 
 

Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find minimum number
// of characters required to be added
// to make a password strong
 
import java.util.regex.Pattern;
import java.util.regex.Matcher;
 
class GFG {
 
    // Function to count minimum
    // number of characters
    static int countCharacters(
        String password)
    {
 
        int count = 0;
 
        // Create the patterns to search digit,
        // upper case alphabet, lower case
        // alphabet and special character
        Pattern digit = Pattern.compile("(\\d)");
        Pattern upper = Pattern.compile("([A-Z])");
        Pattern lower = Pattern.compile("([a-z])");
        Pattern spChar = Pattern.compile("(\\W)");
 
        // Search the above patterns in password.
        Matcher Digit = digit.matcher(password);
        Matcher Upper = upper.matcher(password);
        Matcher Lower = lower.matcher(password);
        Matcher Special = spChar.matcher(password);
 
        // If no digits are present
        if (!Digit.find()) {
            count++;
        }
        // If no upper case alphabet is present
        if (!Upper.find()) {
            count++;
        }
        // If no lower case alphabet is present
        if (!Lower.find()) {
            count++;
        }
        // If no special character is is present
        if (!Special.find()) {
            count++;
        }
 
        // Check if the string length after adding
        // the required characters is less than 8
        if ((count + password.length()) < 8) {
 
            // Add the number of
            // characters to be added
            count = count + 8
                    - (count + password.length());
        }
 
        return count;
    }
 
    // Driver Code
    public static void main(String args[])
    {
 
        String password1 = "Geeksforgeeks";
        System.out.println(
            countCharacters(password1));
 
        String password2 = "Geeks1";
        System.out.println(
            countCharacters(password2));
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find
# minimum number of characters
# required to be added to make
# a password strong
import re
 
# Function to count minimum
# number of characters
def countCharacters(password):
 
    count = 0
 
    # Create the patterns to search digit,
    # upper case alphabet, lower case
    # alphabet and special character
    digit = re.compile("(\\d)")
    upper = re.compile("([A-Z])")
    lower = re.compile("([a-z])")
    spChar = re.compile("(\\W)")
 
    # Search the above patterns
    # in password.
 
    # If no digits are present
    if(not re.search(digit,
                     password)):
        count += 1
 
    # If no upper case alphabet
    # is present
    if(not re.search(upper,
                     password)):
        count += 1
 
    # If no lower case alphabet
    # is present
    if(not re.search(lower,
                     password)):
        count += 1
 
    # If no special character
    # is is present
    if(not re.search(spChar,
                     password)):
        count += 1
 
    # Check if the string length
    # after adding the required
    # characters is less than 8
    if((count +
        len(password)) < 8):
 
        # Add the number of
        # characters to be added
        count = count + 8 - (count +
                             len(password))
 
    return count
 
# Driver code
password1 = "Geeksforgeeks"
print(countCharacters(password1))
 
password2 = "Geeks1"
print(countCharacters(password2))
 
# This code is contributed by avanitrachhadiya2155

chevron_right


Output: 

2
2

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :