计算并打印 ASCII 值不在 [l, r] 范围内的字母
给定一个字符串str ,任务是计算具有 ASCII 值的字母的数量,而不是在 [l, r] 范围内。
例子:
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
方法:开始遍历字符串,检查当前字符的ASCII值是否小于等于r且大于等于l。如果不是,则增加计数并打印该元素。
以下是上述方法的实现:
C++
// C++ implementation of the above approach
#include
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 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;
}
Java
// 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 m= new HashMap();
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
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)
C#
// C# implementation of the above approach
using System;
using System.Collections;
using System.Collections.Generic;
class GFG
{
// 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
Dictionary m = new Dictionary();
int len = str.Length;
for (int i = 0; i < len; i++)
{
// Increment the count
// if the value is less
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 the count
return cnt;
}
// Driver code
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));
}
}
// This code is contributed by rutvik_56
PHP
Javascript
输出:
Characters with ASCII values not in the range [l, r]
in the given string are: e s r
and their count is 7
时间复杂度: O(n) 其中 n 是字符串的长度。