किसी दिए गए स्ट्रिंग के मामले में, दिए गए स्ट्रिंग के वर्णों को पुनर्व्यवस्थित करें ताकि स्वर और व्यंजन वैकल्पिक स्थान पर हों। यदि स्ट्रिंग को उचित तरीके से पुनर्व्यवस्थित नहीं किया जा सकता है, तो "ऐसी कोई स्ट्रिंग नहीं" प्रदर्शित करें। एक दूसरे के संबंध में स्वरों का क्रम और एक दूसरे के संबंध में व्यंजन के क्रम को संरक्षित किया जाना चाहिए।
यदि एक से अधिक आवश्यक स्ट्रिंग्स का निर्माण किया जा सकता है, तो लेक्सिकोग्राफिक रूप से छोटा प्रदर्शित करें।
उदाहरण
Input : Tutorial Output : Tutorila Input : onse Output : nose
दो संभावित परिणाम "नाक" और "एक" मौजूद हैं। चूंकि "नाक" शब्दावली की दृष्टि से छोटा है, इसलिए हम इसे प्रदर्शित करते हैं।
-
दी गई स्ट्रिंग में स्वर और व्यंजन की संख्या गिना जाता है।
-
इस मामले में, यदि गणनाओं के बीच का अंतर एक से अधिक है, तो "संभव नहीं" लौटाएं।
-
इस स्थिति में, यदि व्यंजन से अधिक स्वर हैं, तो पहले स्वर को पहले प्रदर्शित करें और शेष स्ट्रिंग के लिए पुनरावृत्ति करें।
-
इस स्थिति में, यदि स्वरों की तुलना में अधिक व्यंजन हैं, तो पहले व्यंजन को पहले प्रदर्शित करें और शेष स्ट्रिंग के लिए पुनरावृत्ति करें।
-
इस मामले में, यदि गणना समान हैं, तो पहले स्वर की तुलना पहले व्यंजन से करें और पहले छोटे स्वर को प्रदर्शित करें।
उदाहरण
// C++ application of alternate vowel and consonant string #include <bits/stdc++.h> using namespace std; // 'ch1' is treated as vowel or not bool isVowel(char ch1){ if (ch1 == 'a' || ch1 == 'e' || ch1 == 'i' || ch1 == 'o' || ch1 =='u') return true; return false; } // build alternate vowel and consonant string // str1[0...l2-1] and str2[start...l3-1] string createAltStr(string str1, string str2, int start1, int l1){ string finalStr1 = ""; // first adding character of vowel/consonant // then adding character of consonant/vowel for (int i=0, j=start1; j<l1; i++, j++) finalStr1 = (finalStr1 + str1.at(i)) + str2.at(j); return finalStr1; } // function to locate or find the needed alternate vowel and consonant string string findAltStr(string str3){ int nv1 = 0, nc1 = 0; string vstr1 = "", cstr1 = ""; int l1 = str3.size(); for (int i=0; i<l1; i++){ char ch1 = str3.at(i); // count vowels and updaye vowel string if (isVowel(ch1)){ nv1++; vstr1 = vstr1 + ch1; } // counting consonants and updating consonant string else{ nc1++; cstr1 = cstr1 + ch1; } } // no such string can be built if (abs(nv1-nc1) >= 2) return "no such string"; // delete first character of vowel string // then built alternate string with // cstr1[0...nc1-1] and vstr1[1...nv1-1] if (nv1 > nc1) return (vstr1.at(0) + createAltStr(cstr1, vstr1, 1, nv1)); // delete first character of consonant string // then built alternate string with // vstr1[0...nv1-1] and cstr1[1...nc1-1] if (nc1 > nv1) return (cstr1.at(0) + createAltStr(vstr1, cstr1, 1, nc1)); // if both vowel and consonant // strings are of equal length // start building string with consonant if (cstr1.at(0) < vstr1.at(0)) return createAltStr(cstr1, vstr1, 0, nv1); // start building string with vowel return createAltStr(vstr1, cstr1, 0, nc1); } // Driver program to test above int main(){ string str3 = "Tutorial"; cout<< findAltStr(str3); return 0; }
आउटपुट
Tutorila
समय जटिलता और घटा O(n), जहां 'n' को स्ट्रिंग की लंबाई के रूप में माना जाता है