HackerRank Alien Username Solution

Hello Programmers, In this post, you will learn how to solve HackerRank Alien Username Solution. This problem is a part of the Regex HackerRank Series.

One more thing to add, don’t straight away look for the solutions, first try to solve the problems by yourself. If you find any difficulty after trying several times, then look for the solutions. We are going to solve the  Regex HackerRank Solutions using  CPP, JAVA, PYTHON, JavaScript & PHP Programming Languages.

HackerRank Alien Username Solution
HackerRank Alien Username Solution

HackerRank Alien Username Word Solution

Problem

In a galaxy far, far away, on a planet different from ours, each computer username uses the following format:

  1. It must begin with either an underscore, _ (ASCII value 95), or a period, . (ASCII value 46).
  2. The first character must be immediately followed by one or more digits in the range 0 through 9.
  3. After some number of digits, there must be 0 or more English letters (uppercase and/or lowercase).
  4. It may be terminated with an optional _ (ASCII value 95). Note that if it’s not terminated with an underscore, then there should be no characters after the sequence of 0 or more English letters.

Given n strings, determine which ones are valid alien usernames. If a string is a valid alien username, print VALID on a new line; otherwise, print INVALID.

Input Format

The first line contains a single integern, denoting the number of usernames.
Each line i of the n subsequent lines contains a string denoting an alien username to validate.

Constraints

  • 1 <= n <= 100

Output Format

Iterate through each of the n strings in order and determine whether or not each string is a valid alien username. If a username is a valid alien username, print VALID on a new line; otherwise, print INVALID.

Sample Input

3
0898989811abced
_abce
_09090909abcD0

Sample Output

VALID
INVALID
INVALID

Explanation

We validate the following three usernames:

  1. _0898989811abced_ is valid as it satisfies the requirements specified above. Thus, we print VALID.
  2. _abce is invalid as the beginning _ is not followed by one or more digits. Thus, we print INVALID.
  3. _09090909abcD0 is invalid as the sequence of English alphabetic letters is immediately followed by a number. Thus, we print INVALID.

HackerRank Alien Username Solution in Cpp

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <ctype.h>
using namespace std;

int foo(char *c)
{
    int i;
    if(c[0]!='_'&&c[0]!='.')
        return 0;
    if(!isdigit(c[1]))
        return 0;
    i=2;while(isdigit(c[i]))i++;
    while(isalpha(c[i]))i++;
    if(c[i]=='\0')return 1;
    else if(c[i]=='_'&&c[i+1]=='\0')return 1;
    else return 0;
}

int main() {
    int n;
    cin>>n;
    char c[1000];
    for(int i=0;i<n;i++)
    {
        cin>>c;
        if(foo(c))
            cout<<"VALID\n";
        else
            cout<<"INVALID\n";
    }
    return 0;
}

HackerRank Alien Username Solution in Java

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Solution {

	public static void main(String[] args) {
		Pattern p=Pattern.compile("(^\\.|_)(\\d+)([a-z]|[A-Z])*(_){0,1}");
		Scanner in = new Scanner(System.in);

		int count = 0;
		int iterator = in.nextInt();
		in.nextLine();
		for (int i = 0; i < iterator; i++) {
			String data = in.nextLine();
			Matcher m=p.matcher(data);
			if(m.find()){
				if(m.group().equals(data)){
					System.out.println("VALID");
				}else{
					System.out.println("INVALID");
				}
			}else{
				System.out.println("INVALID");
			}
		}
		
	}
}

HackerRank Alien Username Solution in Python

import re
n=int(input())
lines=[]
for i in range(0,n):
    lines.extend(input().split("\n"))

for l in lines:
    if(re.match("^[_.][0-9]{1,}[a-zA-Z]*[_]?$",l)!=None):
       print("VALID")
    else:
        print("INVALID")

HackerRank Alien Username Solution in JavaScript

process.stdin.resume();
process.stdin.setEncoding("ascii");
process.stdin.on("data", function (input) {
	input = input.split('\n');
	var n = parseInt(input[0]),
		strs = input.slice(1,n+1);
	for (i=0, j=strs.length; i<j; i+=1) {
		if (strs[i].match(/^[_\.]\d+[a-z]*_?$/ig)) {
			console.log('VALID');
		} else {
			console.log('INVALID');
		}
	}
});

HackerRank Alien Username Solution in PHP

<?php
$_fp = fopen("php://stdin", "r");
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
fscanf($_fp, "%d", $m);
$lines = array();
for ($i = 0; $i < $m; $i++) {
    $line = trim(fgets($_fp));
    print (preg_match('/^[_\.][0-9]+[a-z]*_?$/i', $line) ? 'VALID' : 'INVALID') . PHP_EOL;
}

Disclaimer: This problem (Alien Username) is generated by HackerRank but the solution is provided by Chase2learn. This tutorial is only for Educational and Learning purposes.

Sharing Is Caring