From 387a5c7b7de6fff63b3a094b02298bcd4b4271ed Mon Sep 17 00:00:00 2001 From: terminaldweller Date: Fri, 8 Apr 2022 21:32:01 +0430 Subject: update --- 3/main.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 3/main.cpp (limited to '3/main.cpp') diff --git a/3/main.cpp b/3/main.cpp new file mode 100644 index 0000000..948a095 --- /dev/null +++ b/3/main.cpp @@ -0,0 +1,47 @@ + +#include "header.hpp" +#include +#include + +class Solution { +public: + static int lengthOfLongestSubstring(std::string s) { + std::unordered_map dict; + int max = 0; + int cur = 0; + int begin = 0; + for (int i = 0; i < s.length(); ++i) { + if (dict.find(s[i]) == dict.end()) { + dict.emplace(std::make_pair(s[i], true)); + cur++; + } else { + auto culprit = s.rfind(s[i], i - 1); + if (culprit < begin) { + cur++; + continue; + } + if (cur >= max) { + max = cur; + } + cur = i - culprit; + begin = culprit + 1; + /* std::cout << s[culprit] << "\n"; */ + } + } + + /* std::cout << max << ":" << cur << "\n"; */ + return std::max(max, cur); + } +}; + +int main(int argc, char **argv) { + std::cout << Solution::lengthOfLongestSubstring("abcabcbb") << "\n"; + std::cout << Solution::lengthOfLongestSubstring("bbbbb") << "\n"; + std::cout << Solution::lengthOfLongestSubstring("pwwkew") << "\n"; + std::cout << Solution::lengthOfLongestSubstring(" ") << "\n"; + std::cout << Solution::lengthOfLongestSubstring("au") << "\n"; + std::cout << Solution::lengthOfLongestSubstring("aab") << "\n"; + std::cout << Solution::lengthOfLongestSubstring("dvdf") << "\n"; + std::cout << Solution::lengthOfLongestSubstring("tmmzuxt") << "\n"; + return 0; +} -- cgit v1.2.3