Hackerrank Tag Content Extractor Solution

Hackerrank Tag Content Extractor Solution

Solution in java8

Approach 1.

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution{
   public static void main(String[] args){
      
       Pattern pattern = Pattern.compile("<([^>]+)>([^<]+)</\\1>");
       
      Scanner in = new Scanner(System.in);
      int testCases = Integer.parseInt(in.nextLine());
      while(testCases>0){
         String line = in.nextLine();
         Matcher m = pattern.matcher(line);
          int matches = 0;
          while(m.find()) {
              matches++;
              System.out.println(m.group(2));
          }
          if(matches == 0) {
              System.out.println("None");
          }
         
         testCases--;
      }
   }
}

Approach 2.

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    private static String tagReg = "<(.+)>([^<]+)</\\1>";
    private static Pattern tagPattern = Pattern.compile(tagReg);     
    
    public static void main(String[] args) {
      
        Scanner in = new Scanner(System.in);
        int testCases = Integer.parseInt(in.nextLine());
      
        while (testCases > 0) {
            String line = in.nextLine();
         
            Matcher tagMatcher = tagPattern.matcher(line);
            if (tagMatcher.find()) {
                do {
                    System.out.println(tagMatcher.group(2));             
                } while (tagMatcher.find());
            } else {
                System.out.println("None");
            }
            testCases--;
       }
   }
}

Approach 3.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.IntStream;


public class Solution
{
    public static void main(String[] args) throws IOException {
        final Pattern tagRE = Pattern.compile("<([^/>]+)>([^<>]+)</\\1>");

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in), 64 * 1024);

        final int T = Integer.parseInt(br.readLine().trim(), 10);

        for (int t = 0; t < T; t++) {
            final String line = br.readLine().trim();

            final List<String> res = new ArrayList<>();
            Matcher match = tagRE.matcher(line);

            while (match.find()) {
                res.add(match.group(2));
            }

            if (res.size() == 0) {
                System.out.println("None");
            } else {
                System.out.println(res.stream().collect(Collectors.joining("\n")));
            }
        }

        br.close();
        br = null;
    }
}

Subscribe to The Poor Coder | Algorithm Solutions

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]
Subscribe