From 16620176eaf6ebf6e7e24a4e27f3e68f7431f2fc Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Mon, 17 Jan 2022 02:00:07 +0200 Subject: Add files via upload --- Sem. 15/task2.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 Sem. 15/task2.cpp (limited to 'Sem. 15/task2.cpp') diff --git a/Sem. 15/task2.cpp b/Sem. 15/task2.cpp new file mode 100644 index 0000000..55229c2 --- /dev/null +++ b/Sem. 15/task2.cpp @@ -0,0 +1,50 @@ +#include + + +bool isValidSymbol(char ch) +{ + return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9'); +} +//true word1 < word2 +bool isLexLess(const char* word1, const char* word2) +{ + while (isValidSymbol(*word1) && isValidSymbol(*word2)) + { + if (*word1 < *word2) + return true; + else if (*word1 > *word2) + return false; + word1++; + word2++; + } + return !isValidSymbol(*word1); +} + + +const char* minWord(const char* str) +{ + size_t len = strlen(str); + const char* currentMin = nullptr; + const char* iter = str; + while (*iter != '\0') + { + if (isValidSymbol(*iter) && ((iter == str) || !isValidSymbol(*(iter - 1)))) + { + if (currentMin == nullptr) + { + currentMin = iter; + } + else + { + if (isLexLess(iter, currentMin)) + currentMin = iter; + } + } + iter++; + } + return currentMin; +} +int main() +{ + std::cout << minWord("me? why always me");// 1 -> 3 -> 6 -> 18 -> 19 +} \ No newline at end of file -- cgit v1.3.1-23-gd82d