একটি স্ট্রিং দেওয়া থাকলে, স্ট্রিংয়ে উপস্থিত সব ভোয়েল (a, e, i, o, u - ছোট ও বড় হাতের) রিভার্স করতে হবে। বাকি কনসোন্যান্টগুলো অপরিবর্তিত থাকবে।
ইনপুট-১
a = "tutor"
আউটপুট
totur
ইনপুট-২
a = "mathematics"
আউটপুট
mithametacs
সমাধানের পদ্ধতি
O(n) সময়ে সমাধানের জন্য টু-পয়েন্টার পদ্ধতি ব্যবহার করা হয়।
- স্ট্রিং ইনপুট নিন।
isVowel(char ch)ফাংশন দিয়ে ভোয়েল চেক করুন।reverseVowel(string &s)ফাংশনেlow = 0এবংhigh = s.size()-1নিন।- বাম ও ডান পয়েন্টার থেকে ভোয়েল খুঁজে পাওয়া পর্যন্ত সکان করুন।
- দুইটি ভোয়েল পাওয়া গেলে সত্যিকারের স্ট্রিংয়েতে সোয়্যাপ করুন এবং পয়েন্টারগুলো সরান।
low < highপর্যন্ত লুপ চালান।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
bool isVowel(char ch) {
return ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u'||
ch=='A'||ch=='E'||ch=='I'||ch=='O'||ch=='U';
}
string reverseVowel(string &s) {
int low = 0, high = s.size() - 1;
while (low < high) {
while (low < high && !isVowel(s[low])) low++;
while (low < high && !isVowel(s[high])) high--;
swap(s[low++], s[high--]);
}
return s;
}
int main() {
string a = "tutorialspoint";
cout << reverseVowel(a);
return 0;
}
আউটপুট
titorailspount