From 9a54773fbcd9d0ae1e142d18aa0b20a119a0ff78 Mon Sep 17 00:00:00 2001 From: eat-swap Date: Wed, 20 Apr 2022 20:02:19 +0800 Subject: [PATCH] add: 220420-CN [cpp] --- cpp/2204/220420-CN.cpp | 35 +++++++++++++++++++++++++++++++++++ cpp/2204/CMakeLists.txt | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 cpp/2204/220420-CN.cpp diff --git a/cpp/2204/220420-CN.cpp b/cpp/2204/220420-CN.cpp new file mode 100644 index 0000000..cbaa480 --- /dev/null +++ b/cpp/2204/220420-CN.cpp @@ -0,0 +1,35 @@ +#include +#include + +class Solution { +public: + static int lengthLongestPath(const std::string& input) { + int max = 0; + short partLen[5001]{}; + + for (const char* ptr = input.c_str(); *ptr; ++ptr) { + short level = 0, len = 0, current = 0, ok = 0; + for (; *ptr && *ptr == '\t'; ++ptr) + ++level; + for (; *ptr && *ptr != '\n'; ++ptr, ++len) + ok |= (*ptr == '.'); + partLen[level] = len; + + if (!ok) + continue; + + for (int i = level; i >= 0; --i) + current += partLen[i]; + max = std::max(max, current + level); + + if (!*ptr) + break; + } + return max; + } +}; + +int main() { + auto x = Solution::lengthLongestPath("a"); + return 0; +} diff --git a/cpp/2204/CMakeLists.txt b/cpp/2204/CMakeLists.txt index 20c1dcc..5260e36 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.cpp) +ADD_EXECUTABLE(2204 220420-CN.cpp)