Count and Print the alphabets having ASCII value not in the range [l, r]
Last Updated :
08 Feb, 2024
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 an 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 the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int CountCharacters(string str, int l, int r)
{
int cnt = 0;
unordered_map< char , int > m;
int len = str.length();
for ( int i = 0; i < len; i++) {
if (!(l <= str[i] and str[i] <= r)) {
cnt++;
if (m[str[i]] != 1) {
cout << str[i] << " " ;
m[str[i]]++;
}
}
}
return cnt;
}
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;
}
|
Java
import java.util.*;
class Solution
{
static int CountCharacters(String str, int l, int r)
{
int cnt = 0 ;
Map<Character, Integer> m= new HashMap<Character, Integer>();
int len = str.length();
for ( int i = 0 ; i < len; i++) {
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 cnt;
}
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));
}
}
|
Python3
def CountCharacters( str , l, r):
cnt = 0
m = {}
length = len ( str )
for i in range ( 0 , length):
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 cnt
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))
|
C#
using System;
using System.Collections;
using System.Collections.Generic;
class GFG
{
static int CountCharacters( string str, int l, int r)
{
int cnt = 0;
Dictionary< char , int > m = new Dictionary< char , int >();
int len = str.Length;
for ( int i = 0; i < len; i++)
{
if (!(l <= str[i] && str[i] <= r))
{
cnt++;
if (!m.ContainsKey(str[i]))
{
m[str[i]] = 0;
Console.Write(str[i] + " " );
}
m[str[i]]++;
}
}
return cnt;
}
public static void Main( string []args)
{
string str = "geeksforgeeks" ;
int l = 102, r = 111;
Console.Write( "Characters with ASCII values" +
"not in the range [l, r] \nin" +
"the given string are: " );
Console.WriteLine( "\nand their count is " +
CountCharacters(str, l, r));
}
}
|
Javascript
<script>
function CountCharacters(str,l,r)
{
let cnt = 0;
let m= new Map();
let len = str.length;
for (let i = 0; i < len; i++) {
if (!(l <= str[i].charCodeAt(0) &&
str[i].charCodeAt(0) <= r)) {
cnt++;
if (!m.has(str[i]))
{
m.set(str[i],0);
document.write(str[i] + " " );
}
m.set(str[i],m.get(str[i]+1));
}
}
return cnt;
}
let str = "geeksforgeeks" ;
let l = 102, r = 111;
document.write( "Characters with ASCII values " +
"not in the range [l, r] <br>in the given string are: " );
document.write( "<br>and their count is " +
CountCharacters(str, l, r));
</script>
|
PHP
<?php
function CountCharacters( $str , $l , $r )
{
$cnt = 0;
$m = array_fill (0, 256, NULL);
$len = strlen ( $str );
for ( $i = 0; $i < $len ; $i ++)
{
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 $cnt ;
}
$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 );
?>
|
Output
Characters with ASCII values not in the range [l, r]
in the given string are: e s r
and their count is 7
Complexity Analysis:
- Time Complexity: O(n) where n is the length of string.
- Space Complexity: O(n) for unordered_map
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...