HackerRank Find a Word Solution

Hello Programmers, In this post, you will know how to solve the HackerRank Find a Word Solution. This problem is a part of the Regex HackerRank Series.

Ezoicreport this adHackerRank Find a Word Solution
HackerRank Find a Word Solutions

One more thing to add, don’t directly look for the solutions, first try to solve the problems of Hackerrank by yourself. If you find any difficulty after trying several times, then you can look for solutions.

HackerRank Find a Word Solution

Problem

We define a word as a non-empty maximum sequence of characters that can contain only lowercase letters, uppercase letters, digits and underscores ‘_’ (ASCII value 95). Maximum sequence means that the word has to be immediately preceeded by a character not allowed to occur in a word or by the left boundary of the sentence, and it has to be immediately followed by a character not allowed to occur in a word or by the right boundary of the sentence.

Given N sentences and T words, for each of these words, find the number of its occurences in all the N sentences.

Input Format

In the first line there is a single integer N. Each of the next N lines contains a single sentence. After that, in the next line, there is a single integer T denoting the number of words. In the i-th of the next T lines, there is a single word denoting the i-th word for which, you have to find the number of its occurences in the sentences.

Constraints

  • 1 <= N <= 100
  • 1 <= T <= 10

For every word, print the number of occurrences of the word in all the N sentences listed.

Sample Input

1
foo bar (foo) bar foo-bar foo_bar foo’bar barfoo bar, foo.
1
foo

Sample Output

6

Explanation

  • foo is the first word
  • (foo) is preceeded by ‘(‘ and followed by ‘)’, so it’s the second word.
  • foo-bar is considered as two words and ‘foo’ is the first of them. It is preceeded by a space and followed by a hyphen ‘-‘
  • bar-foo also contains foo for the same reason mentioned above
  • foo_bar is a single single word and hence foo in it is not counted
  • foo’bar is considered as two words and ‘foo’ is the first of them. It is preceeded by a space and followed by a apostrophe “‘”
  • foo. as it is preceeded by a space and followed by a dot’.

HackerRank Find a Word Solution in Cpp

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
#include <map>
using namespace std;
bool chK(char ch)
{
    if(ch>='a' && ch<='z')
        return true;
    if(ch>='A' && ch<='Z')
        return true;
    if(ch>='0' && ch<='9')
        return true;
    if(ch=='_')
        return true;
    return false;
}
int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */   
    int i,j,k,num,test;
    map<string,int> list;
    string str,in;
    
    cin>>num;
    getchar();
    
    while(num--)
    {
        getline(cin,in);
        str="";
        for(i=0;i<in.size();i++)
        {
            if(chK(in.at(i)))
            {
                str+=in.at(i);
            }
            else
            {
                if(str.size()>0)
                    list[str]++;
                str="";
            }
        } 
        if(str.size()>0)
            list[str]++;
    }
    
    cin>>test;
        
        while(test--)
        {
            cin>>str;
            cout<<list[str]<<endl;
        }
   list.clear();
    
    return 0;
}

HackerRank Find a Word Solution in Java

import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Solution {
    public static void main(String[] args)
    {
        Scanner reader = new Scanner(System.in);
        int nSentences = Integer.parseInt(reader.nextLine());
        String[] sentences = new String[100];
        int i;
        for( i = 0 ; i < nSentences; i++)
        {
            sentences[i] = reader.nextLine();
        }
        int nWords = Integer.parseInt(reader.nextLine());
        for( i = 0 ; i < nWords ; i++)
        {
            String word = reader.nextLine();
            Pattern p = Pattern.compile("\\b"+word+"\\b");
            int count = 0;
            for(int j = 0 ; j < nSentences ; j++)
            {
                Matcher m = p.matcher(sentences[j]);
                while( m.find())
                    count++;
            }
            System.out.println(count);
        }
    }
}

HackerRank Find a Word Solutions in Python

import re
n = int(raw_input())
words = []
regex = "[^a-zA-Z0-9_]*"
for i in range(0, n):
    words += re.split(" *", raw_input())
t = int(raw_input())
for i in range(0, t):
    s = raw_input()
    count = 0
    for w in words:
        for e in re.split(regex, w):
            if e == s: count += 1
    print count
Ezoicreport this ad

HackerRank Find a Word Solutions in JavaScript

process.stdin.resume();
process.stdin.setEncoding("ascii");
process.stdin.on("data", function (input) {
	input = input.split('\n');
	var n = parseInt(input[0]),
		t = parseInt(input[n+1]),
		ts = n+2,
		strs = input.slice(1,n+1).join(' ').split(' '),
		tc = input.slice(ts,ts+t),
		tcc = new Array(),
		c = 0, r, m = false;
	for (i=0, j=tc.length; i<j; i+=1) {
		c = 0;
		r = new RegExp('(?:[\\W]'+tc[i]+'(?![\\w])|(?![\\w])'+tc[i]+'[\\W])','ig');
			for (ii=0, jj=strs.length; ii<jj; ii+=1) {
				var tmp = '-'+strs[ii]+'-';
				m = tmp.match(r);
				if (m) {
					c += m.length;
				}
			}
		console.log(c);
	}
});

HackerRank Find a Word Solutions 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++) {
    $lines[] = fgets($_fp);
}
$lines = preg_split('/[^0-9a-z_]+/', implode(' ', $lines));
$lines = implode(' ', $lines);
fscanf($_fp, "%d", $m);
$searches = array();
for ($i = 0; $i < $m; $i++) {
    $searches[] = trim(fgets($_fp));
}
foreach ($searches as $search) {
    $search = '/\b' . $search . '\b/';
    print preg_match_all($search, $lines, $matches) . PHP_EOL;
}

Disclaimer: This problem (Find a Word) is generated by HackerRank but the Solution is Provided by BrokenProgrammers. This tutorial is only for Educational and Learning purposes.

Next: HackerRank Detect the Email Addresses Solution

Sharing Is Caring

Leave a Comment

Ezoicreport this ad