diff --git a/cpp/2204/220421-CN.cpp b/cpp/2204/220421-CN.cpp new file mode 100644 index 0000000..eca73aa --- /dev/null +++ b/cpp/2204/220421-CN.cpp @@ -0,0 +1,47 @@ +#include +#include +#include +#include + +/** + * 824. Goat Latin + * You are given a string sentence that consist of words separated by spaces. Each word consists of lowercase and uppercase letters only. + * + * We would like to convert the sentence to "Goat Latin" (a made-up language similar to Pig Latin.) The rules of Goat Latin are as follows: + * + * If a word begins with a vowel ('a', 'e', 'i', 'o', or 'u'), append "ma" to the end of the word. + * For example, the word "apple" becomes "applema". + * If a word begins with a consonant (i.e., not a vowel), remove the first letter and append it to the end, then add "ma". + * For example, the word "goat" becomes "oatgma". + * Add one letter 'a' to the end of each word per its word index in the sentence, starting with 1. + * For example, the first word gets "a" added to the end, the second word gets "aa" added to the end, and so on. + * Return the final sentence representing the conversion from sentence to Goat Latin. + */ + +class Solution { +public: + static std::string toGoatLatin(const std::string& sentence) { + const std::string vowels = "aeiou"; + std::istringstream sin(sentence); + std::string ret, word; + int cnt = 0; + while (sin >> word) { + if (std::string::npos == vowels.find(char(std::tolower(word.front())))) { + char ch = word.front(); + word = word.substr(1); + word.push_back(ch); + } + word += "ma"; + word += std::string(++cnt, 'a'); + if (!ret.empty()) + ret.push_back(' '); + ret += word; + } + return ret; + } +}; + +int main() { + std::cout << Solution::toGoatLatin("I speak Goat Latin") << "\n"; + return 0; +} diff --git a/cpp/2204/CMakeLists.txt b/cpp/2204/CMakeLists.txt index 5260e36..5e03d09 100644 --- a/cpp/2204/CMakeLists.txt +++ b/cpp/2204/CMakeLists.txt @@ -3,4 +3,4 @@ PROJECT(2204) SET(CMAKE_CXX_STANDARD 23) -ADD_EXECUTABLE(2204 220420-CN.cpp) +ADD_EXECUTABLE(2204 220421-CN.cpp)