vault backup: 2022-07-14 09:40:42

This commit is contained in:
juan 2022-07-14 09:40:42 +08:00
parent d18eed74c1
commit 1084d88309
2 changed files with 89 additions and 1 deletions

View file

@ -15,6 +15,5 @@
"markdown-importer", "markdown-importer",
"outline", "outline",
"word-count", "word-count",
"open-with-default-app",
"file-recovery" "file-recovery"
] ]

View file

@ -0,0 +1,89 @@
# Leetcode Longest-Substring-Without-Repeating-Characters
#### 2022-07-14 09:33
> ##### Algorithms:
> #algorithm
> ##### Data structures:
> #DS #string
> ##### Difficulty:
> #coding_problem #difficulty-medium
> ##### Additional tags:
> #leetcode
> ##### Revisions:
> N/A
##### Related topics:
```expander
tag:#<INSERT_TAG_HERE>
```
##### Links:
- [Link to problem](https://leetcode.com/problems/longest-substring-without-repeating-characters/)
___
### Problem
Given a string `s`, find the length of the **longest substring** without repeating characters.
#### Examples
**Example 1:**
**Input:** s = "abcabcbb"
**Output:** 3
**Explanation:** The answer is "abc", with the length of 3.
**Example 2:**
**Input:** s = "bbbbb"
**Output:** 1
**Explanation:** The answer is "b", with the length of 1.
**Example 3:**
**Input:** s = "pwwkew"
**Output:** 3
**Explanation:** The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.
#### Constraints
- `0 <= s.length <= 5 * 104`
- `s` consists of English letters, digits, symbols and spaces.
### Thoughts
> [!summary]
> This is a #
Initially, I thought of a lineal algorithm
### Solution
Initial solution
```cpp
class Solution {
public:
int lengthOfLongestSubstring(string s) {
unordered_map<char, int> hMap;
int cur = 0;
int localMax = 0;
for (int i = 0; i < s.size(); i++) {
if (hMap.find(s[i]) == hMap.end()) {
cur++;
localMax = max(cur, localMax);
hMap[s[i]] = i;
} else {
i = hMap[s[i]];
hMap.clear();
cur = 0;
}
}
return localMax;
}
};
```