স্ট্রিং-এ অ্যালফাবেট (a-z, A-Z) ছাড়া অন্য সব ক্যারেক্টার (ডিজিট, সিম্বল, স্পেস) মুছে ফেলা যায় শিফটিং (shifting) দিয়ে।
উদাহরণ কোড
#include <iostream>
using namespace std;
int main() {
char str[100] = "String@123!!";
int i, j;
cout << "String before modification: " << str << endl;
for (i = 0; str[i] != '\0'; ++i) {
while (!((str[i] >= 'a' && str[i] <= 'z') ||
(str[i] >= 'A' && str[i] <= 'Z') ||
str[i] == '\0')) {
for (j = i; str[j] != '\0'; ++j) {
str[j] = str[j + 1];
}
}
}
cout << "String after modification: " << str;
return 0;
}
আউটপুট
String before modification: String@123!! String after modification: String
ব্যাখ্যা
- বাইরের
forলুপ স্ট্রিং ট্রাভার্স করে। - যদি ক্যারেক্টার অ্যালফাবেট বা NULL না হয়, তবে
whileলুপে ঢুকে। - ইনারের
forলুপ (j = i থেকে) বামে শিফট করে:str[j] = str[j+1]। এতে বর্তমান নন-অ্যালফাবেট ক্যারেক্টার ওভাররাইট হয়। whileলুপ повтор হয় কারণ শিফট করার পর নতুন ক্যারেক্টার আসতে পারে সেই পজিশনে।
সীমাবদ্ধতা: O(n²) টাইম কমপ্লেক্সিটি। বড় স্ট্রিং için std::string এবং erase-remove ইডિયোম বা নতুন স্ট্রিং বানানো দ্রুত।