main
Jason Staten 2 years ago
parent 18cd04bab4
commit 44c94e5a96

@ -0,0 +1,30 @@
package norepeat
func max(x, y int) int {
if x > y {
return x
}
return y
}
func lengthOfLongestSubstring(s string) int {
positions := map[byte]int{}
longest := 0
for i := 0; i < len(s); i++ {
char := s[i]
pos, exists := positions[char]
positions[char] = i
longest = max(longest, len(positions))
if exists {
positions = map[byte]int{}
i = pos
}
}
return longest
}
func LengthOfLongestSubstring(s string) int {
return lengthOfLongestSubstring(s)
}

@ -0,0 +1,38 @@
package norepeat_test
import (
"testing"
"git.jxs.me/leetgo/norepeat"
"github.com/stretchr/testify/require"
)
func TestEmpty(t *testing.T) {
result := norepeat.LengthOfLongestSubstring("")
require.Equal(t, 0, result)
}
func TestSingle(t *testing.T) {
result := norepeat.LengthOfLongestSubstring("a")
require.Equal(t, 1, result)
}
func TestDouble(t *testing.T) {
result := norepeat.LengthOfLongestSubstring("ab")
require.Equal(t, 2, result)
}
func TestRepeat(t *testing.T) {
result := norepeat.LengthOfLongestSubstring("dad")
require.Equal(t, 2, result)
}
func TestQuad(t *testing.T) {
result := norepeat.LengthOfLongestSubstring("hellllo")
require.Equal(t, 3, result)
}

@ -0,0 +1,40 @@
3. Longest Substring Without Repeating Characters
Medium
Given a string s, find the length of the longest substring without repeating characters.
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.
Loading…
Cancel
Save