C/C++ 中的元音和辅音交替出现的字符串
给定一个包含元音和辅音的输入字符串,重新排列字符串,使得元音和辅音在最终字符串中交替出现。由于我们正在交替排列元音和辅音,因此输入字符串必须满足以下条件之一 -
元音和辅音的数量必须相同,例如字符串“individual”有 5 个元音和 5 个辅音。
如果元音的数量多,那么元音数量和辅音数量之间的差必须为 1,例如字符串“noe”有 2 个元音和 1 个辅音。
如果辅音数量多,那么辅音数量和元音数量之间的差必须为 1,例如字符串“objective”有 4 个元音和 5 个辅音。
算法
1. count number of vowels 2. Count number of consonants 3. if difference between number of vowels and consonants or viceversa is greater than 1 then return error 4. Split input string into two parts: a) First string contains only vowels b) Second string contains only consonants 5. If number of consonants and vowels are equal, then create final string by picking a character from each string alternatively. 6. If number of vowels are greater than consonants, then: a) Include additional vowel in final string to make both strings of equal length b) Create final string by appending a character from each string alternatively 7. If number of consonants are greater than vowels, then a) Include additional consonant in final string to make both strings of equal length b) Create final string by appending a character from each string alternatively
示例
#include <iostream> #include <string> using namespace std; bool is_vowel(char ch) { if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch =='u') { return true; } return false; } string create_final_string(string &s1, string &s2, int start, int end) { string final_string; for (int i = 0, j = start; j < end; ++i, ++j) { final_string = (final_string + s1.at(i)) + s2.at(j); } return final_string; } string create_alternate_string(string &s) { int vowel_cnt, consonant_cnt; string vowel_str, consonant_str; vowel_cnt = consonant_cnt = 0; for (char c : s) { if (is_vowel(c)) { ++vowel_cnt; vowel_str += c; } else { ++consonant_cnt; consonant_str += c; } } if (abs(consonant_cnt - vowel_cnt) >= 2) { cerr << "String cannot be formed with alternating vowels and cosonants\n"; exit(1); } if ((consonant_cnt - vowel_cnt) == 0) { 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); } 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 << "\n"; cout << "Output: " << create_alternate_string(s1) << "\n\n"; cout << "Input : " << s2 << "\n"; cout << "Output: " << create_alternate_string(s2) << "\n\n"; cout << "Input : " << s3 << "\n"; cout << "Output: " << create_alternate_string(s3) << "\n\n"; }
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
输出
当你编译并执行以上代码时,它将生成以下输出 -
Input : individual Output: inidivudal Input : noe Output: one Input : objective Output: bojecitev
广告