> For the complete documentation index, see [llms.txt](https://blog.bernardw.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blog.bernardw.com/problems/longest-substring-without-repeating-characters.md).

# Longest Substring Without Repeating Characters

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequence and not a substring.

{% tabs %}
{% tab title="Scala" %}

```scala
import scala.collection.mutable.HashMap

def lengthOfLongestSubstring(s: String): Int = {
  var map = new HashMap[Char, Int]
  var j, k, length = 0
  for ((c, i) <- s.zipWithIndex) {
    k = map.get(c).getOrElse(j)
    j = j max k
    length = length max i - j
    map += (c -> i)
  }
  length
}

lengthOfLongestSubstring("")
lengthOfLongestSubstring("pwwkew")
lengthOfLongestSubstring("bbbbb")
lengthOfLongestSubstring("abcabcbb")
```

{% endtab %}

{% tab title="Second Tab" %}

{% endtab %}
{% endtabs %}
