📜  计算并打印 ASCII 值不在 [l, r] 范围内的字母

📅  最后修改于: 2022-05-13 01:57:06.029000             🧑  作者: Mango

计算并打印 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 是字符串的长度。