Skip to content
  • Home
  • Contact Us
  • About Us
  • Privacy Policy
  • DMCA
  • Linkedin
  • Pinterest
  • Facebook
thecscience

TheCScience

TheCScience is a blog that publishes daily tutorials and guides on engineering subjects and everything that related to computer science and technology

  • Home
  • Human values
  • Microprocessor
  • Digital communication
  • Linux
  • outsystems guide
  • Toggle search form
HackerRank Gemstones Problem Solution

HackerRank Gemstones Problem Solution

Posted on April 26, 2023April 28, 2023 By Yashwant Parihar No Comments on HackerRank Gemstones Problem Solution

In this post, we will solve HackerRank Gemstones Problem Solution.

There is a collection of rocks where each rock has various minerals embeded in it. Each type of mineral is designated by a lowercase letter in the range ascii[a – z]. There may be multiple occurrences of a mineral in a rock. A mineral is called a gemstone if it occurs at least once in each of the rocks in the collection.
Given a list of minerals embedded in each of the rocks, display the number of types of gemstones in the collection.
Example
arr = [‘abc’, ‘abc’, ‘bc’]
The minerals b and c appear in each rock, so there are 2 gemstones.

Function Description

Complete the gemstones function in the editor below.

gemstones has the following parameter(s):

  • string arr[n]: an array of strings

Returns

  • int: the number of gemstones found

Input Format
The first line consists of an integer n, the size of arr.
Each of the next n lines contains a string arr[i] where each letter represents an occurence of
a mineral in the current rock.

Sample Input

STDIN       Function
-----       --------
3           arr[] size n = 3
abcdde      arr = ['abcdde', 'baccd', 'eeabg']
baccd
eeabg

Sample Output

2

Explanation

Only a and b occur in every rock.

HackerRank Gemstones Problem Solution
HackerRank Gemstones Problem Solution

Table of Contents

  • Gemstones C Solution
  • Gemstones C++ Solution
  • Gemstones C Sharp Solution
  • Gemstones Java Solution
  • Gemstones JavaScript Solution
  • Gemstones Python Solution

Gemstones C Solution

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
    int N;
    scanf("%d", &N);
    
    char rocks[N][101];
    for(int i = 0; i < N; i++) {
        scanf("%s", rocks[i]);   
    }
    
    char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
    char tested[27] = "\n";
    int nbGems = 0;
    
    for(int i = 0; i < strlen(alphabet); i++) {
        char element = alphabet[i];
        int isGem = 1;
        for(int j = 0; j < N; j++) {
            if(strchr(rocks[j], element) == NULL) {
                isGem = 0;
                break;
            }
        }
        
        if(isGem)
            nbGems++;
    }
    
    printf("%d", nbGems);
    
    return 0;
}

Gemstones C++ Solution

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
#include <set>
using namespace std;


int main() {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */
    string s;
    int N;
    cin >> N;
    int used[26] = {0};
    for (int i = 0; i < N; ++i)
    {
        cin >> s;
        set<char> st(s.begin(), s.end());
//        bool curUsed[26] = {false};
        for (const char & c : st)
        {
//            if (!curUsed[c - 'a'])
              ++used[c - 'a'];
//            curUsed[c - 'a'] = true;
        }
        
        
    }
    
    cout << count(begin(used), end(used), N);
    
    return 0;
}

Gemstones C Sharp Solution

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace subROUTINE.HackerRank.Algorithms
{
    public class GemStones
    {
        public static void Main(string[] args)
        {
            int rockCount = Int32.Parse(Console.ReadLine());
            List<char> firstLineElements = Console.ReadLine().Distinct().ToList();
            rockCount--;

            for (int i = 0; i < rockCount; i++)
            {
                var currentLine = Console.ReadLine();
                firstLineElements.RemoveAll(x => !currentLine.Contains(x));
            }

            Console.WriteLine(firstLineElements.Count);
        }
    }
}

Gemstones Java Solution

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;

class Result {

    /*
     * Complete the 'gemstones' function below.
     *
     * The function is expected to return an INTEGER.
     * The function accepts STRING_ARRAY arr as parameter.
     */

    public static int gemstones(List<String> arr) {
    // Write your code here
    List<Character> characters= new ArrayList<>();
        int count=0;
        int charCount=0;
        for (String word:arr) {
            for (int i = 0; i < word.length(); i++) {
                if (!characters.contains(word.charAt(i))){
                    characters.add(word.charAt(i));
                }
            }
        }

        for (int i = 0; i < characters.size(); i++) {
            for (int j = 0; j < arr.size(); j++) {
                if (arr.get(j).indexOf(characters.get(i))!=-1){
                    charCount++;
                }
            }
            if (charCount==arr.size()){
                count++;
            }
            charCount=0;
        }

        return count;

    }

}

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        int n = Integer.parseInt(bufferedReader.readLine().trim());

        List<String> arr = IntStream.range(0, n).mapToObj(i -> {
            try {
                return bufferedReader.readLine();
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            }
        })
            .collect(toList());

        int result = Result.gemstones(arr);

        bufferedWriter.write(String.valueOf(result));
        bufferedWriter.newLine();

        bufferedReader.close();
        bufferedWriter.close();
    }
}

Gemstones JavaScript Solution

'use strict';

process.stdin.resume();
process.stdin.setEncoding('ascii');

var __input = ""
process.stdin.on('data', function (data) { __input += data; });
process.stdin.on('end', function() { processData(__input); });

function processData (input) {
    var lines = input.split("\n");
    var T = parseInt(lines.shift(), 10);
    var tests = lines.slice(0, T);
    var gems = [];
    var init = false;
    
    function countGems (str) {
        str = str.split("");
        if (!init) {
            init = true;
            for (var i = 0; i < str.length; i++) {
                if (gems.indexOf(str[i]) == -1) gems.push(str[i]);
            }
        } else {
            gems = gems.filter(function (gem) {
                if (str.indexOf(gem) == -1) return false;
                return true;
            });
        }
    }
    
    tests.map(countGems);
    process.stdout.write("" + gems.length + "\n"); 
}

Gemstones Python Solution

import fileinput

l = []
g = []
cnt = 0
flag = 1
for line in fileinput.input():
    l.append(line)    
l.pop(0)

for i in range(len(l[0])):
    if g.count(l[0][i]) == 0:
        g.append(l[0][i])

for char in g:
    for x in l:
        for i in range(len(x)):
            if x[i] == char:
                break
        else:
            flag = 0
            break
    if flag == 1:
        cnt = cnt + 1
    flag = 1
print(cnt)

Other Solutions

  • HackerRank Alternating Characters Solution
  • HackerRank The Full Counting Sort Solution
c, C#, C++, HackerRank Solutions, java, javascript, python Tags:C, cpp, CSharp, Hackerrank Solutions, java, javascript, python

Post navigation

Previous Post: HackerRank Counting Sort 2 Problem Solution
Next Post: HackerRank Alternating Characters Solution

Related Posts

HackerRank Counting Sort 2 Problem Solution HackerRank Counting Sort 2 Problem Solution c
HackerRank Happy Ladybugs Problem Solution HackerRank Happy Ladybugs Problem Solution c
HackerRank Fraudulent Activity Notifications Problem Solution HackerRank Fraudulent Activity Notifications c
HackerRank Journey Scheduling Problem Solution HackerRank Journey Scheduling Problem Solution c
HackerRank Favorite sequence Problem Solution HackerRank Favorite sequence Problem Solution c
HackerRank Two Strings Problem Solution HackerRank Two Strings Problem Solution c

Leave a Reply Cancel reply

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

Pick Your Subject
Human Values

Copyright © 2023 TheCScience.

Powered by PressBook Grid Blogs theme