Techgig – Virus Outbreak – Solution – Java

Virus Outbreak (100 Marks)

In the Martian land faraway, a new virus has evolved and is attacking the individuals at a fast pace. The scientists have figured out the virus composition, V. The big task is to identify the people who are infected. The sample of N people is taken to check if they are POSITIVE or NEGATIVE. A report is generated which provides the current blood composition B of the person. 

POSITIVE or NEGATIVE ?

If the blood composition of the person is a subsequence of the virus composition V, then the person is identified as POSITIVE otherwise NEGATIVE.

Example:
Virus Composition, V = coronavirus
Blood Composition of the person, B = ravus
The person in question is POSITIVE as B is the subsequence of the V. 

The scientists are busy with their research for medicine and request you to build a program which can quickly figure out if the person is POSITIVE or NEGATIVE. They will provide you with the virus composition V and all the people’s current blood composition. Can you help them?

Note: The virus and blood compositions are lowercase alphabet strings.

Input Format

The first line of the input consists of the virus composition, V
The second line of the input consists of the number of people, N
Next N lines each consist of the blood composition of the ith person

Constraints

1<= N <=10

1<= |B|<= |V|<= 10^5

Output Format

For each person, print POSITIVE or NEGATIVE in a separate line

Sample TestCase 1

Input

Coronavirus
3
abcde
crnas
onarous

Output

NEGATIVE
POSITIVE
NEGATIVE

Time Limit(X):

0.50 sec(s) for each input.

Memory Limit:
512 MB

/* 
 * Enter your code here. Read input from STDIN. Print your output to STDOUT. 
 * Your class should be named CandidateCode.
*/

import java.io.*;
import java.util.*;
public class CandidateCode {
    public static void main(String args[] ) throws Exception {

        Scanner scanner = new Scanner(System.in);
        String virusComposition = scanner.next();
        int sampleCount = scanner.nextInt();
        int count = 0;
        while(count < sampleCount){
            count++;
            String sample = scanner.next();
            Boolean result = isPositive(sample,virusComposition);
            if(result)
                System.out.println("POSITIVE");
            else
                System.out.println("NEGATIVE");
                
        }
        scanner.close();

   }
   public static Boolean isPositive(String str1,String str2){
    int m = str1.length();
    int n = str2.length();

    int i = 0;
    int j = 0;

    while (j < m && i < n){
        if (str1.charAt(j) == str2.charAt(i)){
            j++;
        }
        i++;
    }
    return (j == m);
   }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

eighteen − 6 =

Recent Posts

Latest News