Open In App
Related Articles

Find count of Alphabetic and Alphanumeric strings from given Array of Strings

Improve Article
Improve
Save Article
Save
Like Article
Like

Given an array of strings arr[] of size N. Each of the strings contains lowercase English letters or numbers only. The task is to find the frequency of alphabetic and alphanumeric strings in the array.

Note: If any string has atleast one number in it, the string is an alphanumeric string.

Examples:

Input: arr[] = {“abcd”, “mak87s”, “abcd”, “kakjdj”, “laojs7s6”}
Output: 3 2
“abcd”: 2
“kakjdj”: 1
“mak87s”: 1
“laojs7s6”: 1
Explanation: From the given input the strings which have only alphabets are
“abcd”, “kakjdj” and the remaining strings contains numbers. So 3 alphabetic and two alphanumeric strings in total.
These two strings have frequency of 2 and 1 and the other two strings have frequency of 1 each.

Input: arr[] = {“defr3t”, “lsk4dk”, “njdcd”}
Output: 1 2
“njdcd”: 1
“defr3t”: 1
“lsk4dk”: 1

 

Approach: The approach to solving this problem is based upon hashing technique. Follow the steps mentioned below to solve the problem.

  • Take a hash map function to count the frequency
  • Now iterate a from 0 to N-1 and then store.
    • Now iterate another for loop inside the first for loop(nested loop) from 0 to size of that string.
    • Now check whether each element is an alphabet or not
      • If yes increment the count of alphabetic strings and increase the frequency of that string by 1.
      • Otherwise, increment the count of alphanumeric strings and increase the frequency of that string by 1.
  • Print the total count of alphanumeric and alphabetic strings and frequencies of each string separately.

Below is the implementation of the above approach:

C++




// C++ code to implement the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find frequency
void find_freq(string v[], int n)
{
    // Take an hash map function
    // to count frequency
    map<string, int> mp1, mp2;
 
    int count1 = 0, count2 = 0;
    bool flag;
    for (int i = 0; i < n; i++) {
        flag = true;
        for (int j = 0; j < v[i].size(); j++) {
 
            // Check whether the string has
            // numbers or not
            if (v[i][j] >= '0'
                && v[i][j] <= '9') {
                flag = false;
                break;
            }
        }
 
        // For alphabetic string
        if (flag) {
            count1++;
            mp1[v[i]]++;
        }
 
        // For alphanumeric string
        else {
            count2++;
            mp2[v[i]]++;
        }
    }
    cout << count1 << " " << count2 << endl;
 
    // Print the frequencies of
    // alphabetic strings
    for (auto it : mp1) {
        cout << it.first << ": "
             << it.second << endl;
        ;
    }
 
    // Print the frequencies of
    // alphanumeric strings
    for (auto it : mp2) {
        cout << it.first << ": "
             << it.second << endl;
        ;
    }
}
 
// Drive code
int main()
{
    int N = 5;
    string arr[] = { "abcd", "mak87s", "abcd",
                     "kakjdj", "laojs7s6" };
 
    // Function call
    find_freq(arr, N);
    return 0;
}


Java




// Java code for the above approach
import java.util.*;
 
class GFG {
 
  // Function to find frequency
  static void find_freq(String v[], int n)
  {
     
    // Take an hash map function
    // to count frequency
    Map<String, Integer> mp1 = new HashMap<String, Integer>();
    Map<String, Integer> mp2 = new HashMap<String, Integer>();
 
    int count1 = 0, count2 = 0;
    Boolean flag;
    for (int i = 0; i < n; i++) {
      flag = true;
      for (int j = 0; j < v[i].length(); j++) {
 
        // Check whether the string has
        // numbers or not
        if (v[i].charAt(j) >= '0'
            && v[i].charAt(j) <= '9') {
          flag = false;
          break;
        }
      }
 
      // For alphabetic string
      if (flag) {
        count1++;
        if (mp1.containsKey(v[i]))
        {
          mp1.put(v[i], mp1.get(v[i]) + 1);
        }
        else
        {
          mp1.put(v[i], 1);
        }
      }
 
      // For alphanumeric string
      else {
        count2++;
        if (mp2.containsKey(v[i]))
        {
          mp2.put(v[i], mp2.get(v[i]) + 1);
        }
        else
        {
          mp2.put(v[i], 1);
        }
      }
    }
    System.out.println(count1 + " " + count2);
 
    // Print the frequencies of
    // alphabetic strings
    for (Map.Entry<String, Integer> entry : mp1.entrySet())
    {
      System.out.println(entry.getKey() + ":" + entry.getValue());
    }
 
    // Print the frequencies of
    // alphanumeric strings
    for (Map.Entry<String, Integer> entry : mp2.entrySet())
    {
      System.out.println(entry.getKey() + ":" + entry.getValue());
    }
 
  }
 
  // Drive code
  public static void main (String[] args) {
    int N = 5;
    String arr[] = { "abcd", "mak87s", "abcd",
                    "kakjdj", "laojs7s6" };
 
    // Function call
    find_freq(arr, N);
  }
}
 
// This code is contributed by hrithikgarg03188.


Python3




# Python code to implement the above approach
 
# Function to find frequency
def find_freq(v, n):
   
    # Take an hash map function
    # to count frequency
    mp1 = {}
    mp2 = {}
 
    count1 = 0
    count2 = 0
    flag = False
    for i in range(n):
        flag = True
        for j in range(len(v[i])):
 
            # Check whether the string has
            # numbers or not
            if(v[i][j] >= '0' and v[i][j] <= '9'):
                flag = False
                break
 
        # For alphabetic string
        if (flag):
            count1 = count1+1
            if v[i] in mp1:
                mp1[v[i]] = mp1[v[i]]+1
            else :
                mp1[v[i]] = 1
 
        # For alphanumeric string
        else :
            count2 = count2+1
            if v[i] in mp1:
                mp2[v[i]] = mp2[v[i]]+1
            else :
                mp2[v[i]] = 1
    print(f"{count1} {count2}")
 
    # Print the frequencies of
    # alphabetic strings
    for key,value in mp1.items():
        print(f"{key} : {value}")
 
    # Print the frequencies of
    # alphanumeric strings
    for key,value in mp2.items():
        print(f"{key} : {value}")
 
# Driver code
N = 5
arr = [ "abcd", "mak87s", "abcd", "kakjdj", "laojs7s6" ];
 
# Function call
find_freq(arr, N);
 
# This code is contributed by shinjanpatra.


C#




// C# program to implement above approach
using System;
using System.Collections;
using System.Collections.Generic;
 
class GFG
{
 
  // Function to find frequency
  static void find_freq(String[] v, int n)
  {
 
    // Take an hash map function
    // to count frequency
    SortedDictionary<String, int> mp1 = new SortedDictionary<String, int>();
    SortedDictionary<String, int> mp2 = new SortedDictionary<String, int>();
 
    int count1 = 0, count2 = 0;
    bool flag;
    for (int i = 0; i < n; i++) {
      flag = true;
      for (int j = 0 ; j < v[i].Length ; j++) {
 
        // Check whether the string has
        // numbers or not
        if (v[i][j] >= '0' && v[i][j] <= '9') {
          flag = false;
          break;
        }
      }
 
      // For alphabetic string
      if (flag) {
        count1++;
        if (mp1.ContainsKey(v[i]))
        {
          mp1[v[i]] += 1;
        }
        else
        {
          mp1.Add(v[i], 1);
        }
      }
 
      // For alphanumeric string
      else {
        count2++;
        if (mp2.ContainsKey(v[i]))
        {
          mp2[v[i]] += 1;
        }
        else
        {
          mp2.Add(v[i], 1);
        }
      }
    }
 
    Console.WriteLine(count1 + " " + count2);
 
    // Print the frequencies of
    // alphabetic strings
    foreach (KeyValuePair<String, int> entry in mp1)
    {
      Console.WriteLine(entry.Key + ": " + entry.Value);
    }
 
    // Print the frequencies of
    // alphanumeric strings
    foreach (KeyValuePair<String, int> entry in mp2)
    {
      Console.WriteLine(entry.Key + ": " + entry.Value);
    }
 
  }
 
  // Driver code
  public static void Main(string[] args)
  {
    int N = 5;
    String[] arr = new String[]{ "abcd", "mak87s", "abcd", "kakjdj", "laojs7s6" };
 
    // Function call
    find_freq(arr, N);
 
  }
}
 
// This code is contributed by subhamgoyal2014.


Javascript




<script>
    // JavaScript code to implement the above approach
 
    // Function to find frequency
    const find_freq = (v, n) =>
     
        // Take an hash map function
        // to count frequency
        let mp1 = {}, mp2 = {};
 
        let count1 = 0, count2 = 0;
        let flag = false;
        for (let i = 0; i < n; i++) {
            flag = true;
            for (let j = 0; j < v[i].length; j++) {
 
                // Check whether the string has
                // numbers or not
                if (v[i][j] >= '0'
                    && v[i][j] <= '9') {
                    flag = false;
                    break;
                }
            }
 
            // For alphabetic string
            if (flag) {
                count1++;
                if (v[i] in mp1) mp1[v[i]] += 1
                else mp1[v[i]] = 1;
            }
 
            // For alphanumeric string
            else {
                count2++;
                if (v[i] in mp2) mp2[v[i]] += 1;
                else mp2[v[i]] = 1;
            }
        }
        document.write(`${count1} ${count2}<br/>`);
 
        // Print the frequencies of
        // alphabetic strings
        for (let it in mp1) {
            document.write(`${it}: ${mp1[it]}<br/>`);
 
        }
 
        // Print the frequencies of
        // alphanumeric strings
        for (let it in mp2) {
            document.write(`${it}: ${mp2[it]}<br/>`);
        }
    }
 
    // Drive code
    let N = 5;
    let arr = ["abcd", "mak87s", "abcd",
        "kakjdj", "laojs7s6"];
 
    // Function call
    find_freq(arr, N);
 
// This code is contributed by rakeshsahni
 
</script>


 
 

Output

3 2
abcd: 2
kakjdj: 1
laojs7s6: 1
mak87s: 1

 

Time Complexity: O(N * M) where M is the maximum length of a string
Auxiliary Space: O(N)

 


Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Last Updated : 22 Jun, 2022
Like Article
Save Article
Similar Reads
Related Tutorials