Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับและพิมพ์ตัวอักษรที่มีค่า ASCII ไม่อยู่ในช่วง [l, r] ใน C++


เราได้รับสตริงที่มีความยาวเท่าใดก็ได้ และภารกิจคือการคำนวณการนับและพิมพ์ตัวอักษรในสตริงที่มีค่า ASCII ไม่อยู่ในช่วง [l,r]

ค่า ASCII สำหรับอักขระ A-Z แสดงไว้ด้านล่าง

A B C D E F G สูง ฉัน J K L ไม่มี O P Q 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 สำหรับอักขระ a-z แสดงไว้ด้านล่าง

b c d f g i j k n o p q r s
9
7
9
8
9
9
10
0
10
1
10
2
10
3
10
4
10
5
10
6
10
7
10
8
10
9
11
0
11
1
11
2
11
3
11
4
11
5


t u v w x y 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 ถึง 0 จนกว่า i จะน้อยกว่าความยาวของสตริง

  • ภายในลูป ตรวจสอบว่าเริ่มต้นน้อยกว่าไม่เท่ากับ str[i] และ str[i] น้อยกว่าไม่เท่ากับสิ้นสุด

  • ภายใน if ตรวจสอบว่า mp[str[i]] ! =1 จากนั้นพิมพ์ str[i] else เพิ่ม 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