दिए गए इनपुट स्ट्रिंग में स्वर और व्यंजन हैं। स्ट्रिंग को इस तरह पुनर्व्यवस्थित करें कि स्वर और व्यंजन अंतिम स्ट्रिंग में वैकल्पिक स्थानों पर हों।
शर्तें:
- स्वरों और व्यंजनों की संख्या समान हो (जैसे "individual": 5 स्वर, 5 व्यंजन)।
- यदि स्वर अधिक हैं, तो अंतर 1 होना चाहिए (जैसे "noe": 2 स्वर, 1 व्यंजन)।
- यदि व्यंजन अधिक हैं, तो अंतर 1 होना चाहिए (जैसे "objective": 4 स्वर, 5 व्यंजन)।
एल्गोरिदम
- स्वरों की संख्या गिनें।
- व्यंजनों की संख्या गिनें।
- यदि अंतर 1 से अधिक है तो त्रुटि लौटाएं।
- इनपुट स्ट्रिंग को दो भागों में विभाजित करें: केवल स्वर और केवल व्यंजन।
- यदि संख्या समान है, तो प्रत्येक स्ट्रिंग से बारी-बारी से कैरेक्टर लेकर अंतिम स्ट्रिंग बनाएं।
- यदि स्वर अधिक हैं, तो पहले अतिरिक्त स्वर जोड़ें, फिर बारी-बारी से।
- यदि व्यंजन अधिक हैं, तो पहले अतिरिक्त व्यंजन जोड़ें, फिर बारी-बारी से।
C++ कोड उदाहरण
#include <iostream>
#include <string>
using namespace std;
bool is_vowel(char ch) {
return (ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u');
}
string create_final_string(string &s1, string &s2, int start, int end) {
string final_string;
for(int i=0, j=start; j= 2) {
cerr << "String cannot be formed with alternating vowels and consonants\n";
exit(1);
}
if(consonant_cnt == vowel_cnt)
return create_final_string(vowel_str, consonant_str, 0, vowel_cnt);
else if(vowel_cnt > consonant_cnt)
return vowel_str.at(0) + create_final_string(consonant_str, vowel_str, 1, vowel_cnt);
else
return consonant_str.at(0) + create_final_string(vowel_str, consonant_str, 1, consonant_cnt);
}
int main() {
string s1 = "individual";
string s2 = "noe";
string s3 = "objective";
cout << "Input: " << s1 << "\nOutput: " << create_alternate_string(s1) << "\n\n";
cout << "Input: " << s2 << "\nOutput: " << create_alternate_string(s2) << "\n\n";
cout << "Input: " << s3 << "\nOutput: " << create_alternate_string(s3) << "\n\n";
return 0;
}
आउटपुट
Input: individual Output: inidivudal Input: noe Output: one Input: objective Output: bojecitev