Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 [l, r] 범위에 없는 ASCII 값을 가진 알파벳을 세어 인쇄합니다.

<시간/>

임의의 길이의 문자열이 제공되고 작업은 개수를 계산하고 [l,r]

범위에 없는 ASCII 값을 갖는 문자열의 알파벳을 인쇄하는 것입니다.

A-Z 문자의 ASCII 값은 다음과 같습니다.

A B C D E F G H J K L N O P 질문 R S
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83


T U V W X Y Z
84 85 86 87 88 89 90

ASCII 값은 다음과 같습니다.

<스타일="배경 색상:rgb(255, 255, 255);">b <스타일="배경 색상:rgb(255, 255, 255);">g <스타일="배경 색상:rgb(255, 255, 255);">h <스타일="배경 색상:rgb(255, 255, 255);">n <스타일="배경 색상:rgb(255, 255, 255);">p <스타일="배경 색상:rgb(255, 255, 255);">q
a c d e f i j k l m o r
9
7
9
8
9
9
10
0
10
1
10
2
10

10
4
10
5
10
6
10
7
10
8
10
9
11
0
11
1
11
2
11

11
4
11
5


<스타일="배경 색상:rgb(255, 255, 255);">w <스타일="배경 색상:rgb(255, 255, 255);">y
t u v x z
116 117 118 119 120 121 122

Input − String str = “point
      First = 111, Last = 117
Output − characters not in the given range are: i, n
      Count is: 2

설명 - i와 n은 [111, 117] 범위에 속하지 않기 때문에 이러한 문자는 계산됩니다.

Input − String str = “ABCZXY
      First = 65, Last = 70
Output − characters in the given range are: A, B, C
      Count is: 3

설명 − Z, X, Y는 [65, 70] 범위에 속하지 않으므로 이 문자는 계산됩니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 문자열, 시작 및 끝 값을 입력하여 범위를 만들고 변수에 저장합니다. 예를 들어 str.

  • 공백을 포함한 문자열의 문자 수에 따라 정수 값을 반환하는 length() 함수를 사용하여 문자열의 길이를 계산합니다.

  • 문자 수를 저장하고 맵을 생성할 임시 변수를 가져옵니다. 예를 들어 mp

  • i가 문자열의 길이보다 작을 때까지 i에서 0까지 루프를 시작합니다.

  • 루프 내에서 start가 str[i]보다 작지 않고 str[i]가 end보다 작지 않은지 확인합니다.

  • if 내부에서 mp[str[i]] ! =1 다음 인쇄 str[i] 그렇지 않으면 mp[str[i]]를 1 증가

  • 개수 반환

  • 결과 인쇄

예시

#include <iostream>
#include <unordered_map>
using namespace std;
// To count the number of characters whose
// ascii value not in range [l, r]
int count_non_char(string str, int left, int right){
   int count = 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++) {
      if (!(left <= str[i] and str[i] <= right)){
         count++;
         if (m[str[i]] != 1){
            cout << str[i] << " ";
            m[str[i]]++;
         }
      }
   }
   // return the count
   return count;
}
// main code
int main(){
   string str = "tutorialspoint";
   int left = 102, right = 111;
   cout << "Characters and ";
   cout << "\nand count in the given range is: " << count_non_char(str, left, right);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Characters and
and count in the given range is: t u r a s p 8