আমাদের যেকোনো দৈর্ঘ্যের একটি স্ট্রিং দেওয়া আছে এবং আমাদের কাজ হল স্ট্রিংতে থাকা সেই অক্ষরগুলির সংখ্যা গণনা ও প্রিন্ট করা যাদের ASCII মান [l, r] রেঞ্জের বাইরে পড়ে।
A-Z অক্ষরের ASCII মান
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | 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 |
a-z অক্ষরের ASCII মান
| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 |
| t | u | v | w | x | y | z |
|---|---|---|---|---|---|---|
| 116 | 117 | 118 | 119 | 120 | 121 | 122 |
উদাহরণ
ইনপুট − String str = "point" First = 111, Last = 117 আউটপুট − রেঞ্জের বাইরের অক্ষর: i, n গণনা: 2
ব্যাখ্যা − যেহেতু i এবং n [111, 117] রেঞ্জের মধ্যে নয়, এই অক্ষরগুলোর গণনা হবে।
ইনপুট − String str = "ABCZXY" First = 65, Last = 70 আউটপুট − রেঞ্জের বাইরের অক্ষর: Z, X, Y গণনা: 3
ব্যাখ্যা − যেহেতু Z, X, Y [65, 70] রেঞ্জের মধ্যে নয়, এই অক্ষরগুলোর গণনা হবে।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- স্ট্রিং, শুরু এবং শেষ মান ইনপুট নিয়ে রেঞ্জ তৈরি করুন এবং
strভেরিয়েবলে সংরক্ষণ করুন length()ফাংশন দিয়ে স্ট্রিং দৈর্ঘ্য গণনা করুন- একটি অস্থায়ী ভেরিয়েবল নিন যা অক্ষরগুলির গণনা সংরক্ষণ করবে এবং একটি
mapতৈরি করুন, যেমনmp i = 0থেকেi < string lengthপর্যন্ত লুপ শুরু করুন- লুপের ভিতরে চেক করুন
!(left <= str[i] && str[i] <= right) - যদি সত্য হয় তবে চেক করুন
mp[str[i]] != 1হলেstr[i]প্রিন্ট করুন, অন্যথায়mp[str[i]]1 বৃদ্ধি করুন countফেরত দিন- ফলাফল প্রিন্ট করুন
উদাহরণ কোড
#include <iostream>
#include <unordered_map>
using namespace std;
// [l, r] রেঞ্জের বাইরে ASCII মান 가진 অক্ষর গণনা
int count_non_char(string str, int left, int right) {
int count = 0;
// একটি অক্ষর একবারই প্রিন্ট করার জন্য map ব্যবহার
unordered_map<char, int> m;
int len = str.length();
for (int i = 0; i < len; i++) {
if (!(left <= str[i] && str[i] <= right)) {
count++;
if (m[str[i]] != 1) {
cout << str[i] << " ";
m[str[i]]++;
}
}
}
// গণনা ফেরত দিন
return count;
}
// main কোড
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