#include #include #include bool has_equal_vowel_counts(const std::string& str) { static const std::string vowels = "aeiou"; std::size_t len = str.size(); std::size_t half = len / 2; std::size_t start_second = (len % 2) ? half + 1 : half; int count1 = 0, count2 = 0; for (std::size_t i = 0; i < half; ++i) { char c = std::tolower(static_cast(str[i])); if (vowels.find(c) != std::string::npos) ++count1; } for (std::size_t i = start_second; i < len; ++i) { char c = std::tolower(static_cast(str[i])); if (vowels.find(c) != std::string::npos) ++count2; } return count1 == count2; } int main() { const std::string case_values[] = { "racecar", "Lorem Ipsum", "Kitty Ipsum", "string", " ", "abcdefghijklmnopqrstuvwxyz", "123A#b!E&*456-o.U" }; for (const auto& s : case_values) { std::cout << std::boolalpha << has_equal_vowel_counts(s) << '\n'; std::cout << "-----------------------------------\n"; } }