Count and Print the alphabets having ASCII value not in the range [l, r]

Given a string str, the task is to count the number of alphabets having ascii values not in the range [l, r].

Examples:

Input: str = "geeksforgeeks", l = 102, r = 111
Output: Count = 7
Characters - e, s, r have ascii values not in the range [102, 111].

Input: str = "GeEkS", l = 80, r = 111
Output: Count = 2


Approach: Start traversing the string and check if the current character has ASCII value less than equal to r and greater than equal to l. If no then increment the count and print that element.

Below is the implementation of above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the above approach
#include <bits/stdc++.h>
using namespace std;
  
// Function to count the number of characters
// whose ascii value not in range [l, r]
int CountCharacters(string str, int l, int r)
{
    // Initializing the count to 0
    int cnt = 0;
  
    // using map to print a character only once
    unordered_map<char, int> m;
    int len = str.length();
    for (int i = 0; i < len; i++) {
  
        // Increment the count
        // if the value is less
        if (!(l <= str[i] and str[i] <= r)) {
            cnt++;
            if (m[str[i]] != 1) {
                cout << str[i] << " ";
            m[str[i]]++;
            }
        }
    }
    // return the count
    return cnt;
}
  
// Driver code
int main()
{
    string str = "geeksforgeeks";
    int l = 102, r = 111;
  
    cout << "Characters with ASCII values"
            " not in the range [l, r] \nin the given string are: ";
    cout << "\nand their count is " << CountCharacters(str, l, r);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the above approach
import java.util.*;
class Solution
{
    
// Function to count the number of characters 
// whose ascii value not in range [l, r] 
static int CountCharacters(String str, int l, int r) 
    // Initializing the count to 0 
    int cnt = 0
    
    // using map to print a character only once 
    Map<Character, Integer> m= new HashMap<Character, Integer>(); 
    int len = str.length(); 
    for (int i = 0; i < len; i++) { 
    
        // Increment the count 
        // if the value is less 
        if (!(l <= str.charAt(i) && str.charAt(i) <= r)) { 
            cnt++; 
            if(m.get(str.charAt(i))!=null)
            if (m.get(str.charAt(i)) != 1) { 
                System.out.print(str.charAt(i) + " "); 
            m.put(str.charAt(i),m.get(str.charAt(i))==null?0:m.get(str.charAt(i))+1); 
            
        
    
    // return the count 
    return cnt; 
    
// Driver code 
public static void main(String args[]) 
    String str = "geeksforgeeks"
    int l = 102, r = 111
    
    System.out.println( "Characters with ASCII values not in the range [l, r] \nin the given string are: "); 
     System.out.println(  "\nand their count is " + CountCharacters(str, l, r)); 
    
}
//contributed by Arnab Kundu

chevron_right


Python3

# Python3 implementation of the
# above approach

# Function to count the number of
# characters whose ascii value not
# in range [l, r]
def CountCharacters(str, l, r):

# Initializing the count to 0
cnt = 0

# using map to pra character
# only once
m = {}
length = len(str)
for i in range(0, length):

# Increment the count if the
# value is less
if (not(l <= ord(str[i]) and ord(str[i]) <= r)): cnt += 1 if ord(str[i]) not in m: m[ord(str[i])] = 0 print(str[i], end = " ") m[ord(str[i])] += 1 # return the count return cnt # Driver Code if __name__ == '__main__': str = "geeksforgeeks" str = str.strip() l = 102 r = 111 print("Characters with ASCII values", end = "") print(" not in the range [l, r]\n", "in the given string are: ", end = "") print("\nand their count is ", CountCharacters(str, l, r)) # This code is contributed by # Shubham Singh(SHUBHAMSINGH10) [tabby title="PHP"]

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php 
// PHP implementation of the above approach
  
// Function to count the number of characters
// whose ascii value not in range [l, r]
function CountCharacters($str, $l, $r)
{
    // Initializing the count to 0
    $cnt = 0;
  
    // using map to print a character
    // only once
    $m = array_fill(0, 256, NULL);
    $len = strlen($str);
    for ($i = 0; $i < $len; $i++) 
    {
  
        // Increment the count
        // if the value is less
        if (!($l <= ord($str[$i]) and 
                    ord($str[$i]) <= $r)) 
        {
            $cnt++;
            if (isset($m[ord($str[$i])]) != 1)
            {
                echo $str[$i] . " ";
                $m[ord($str[$i])]++;
            }
        }
    }
    // return the count
    return $cnt;
}
  
// Driver code
$str = "geeksforgeeks";
$l = 102;
$r = 111;
echo "Characters with ASCII values not in the "
      "range [l, r] \nin the given string are: ";
echo "\nand their count is "
       CountCharacters($str, $l, $r);
  
// This code is contributed 
// by ChitraNayal
?>

chevron_right


Output:

Characters with ASCII values not in the range [l, r] 
in the given string are: e s r 
and their count is 7

Time Complexity : O(n) where n is the length of string.



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.