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.
翻译:
给定一个字符串,找到最长的、没有重复字符的子字符串,返回其长度。
Solution:
class Solution {
fun lengthOfLongestSubstring(s: String): Int {
val arr = BooleanArray(128)
var head = 0
var max = 0
for ((tail, char) in s.withIndex()) {
val index = char.toInt()
if (arr[index]) {
val l = tail - head
max = if (max > l) max else l
while (arr[index]) {
arr[s[head].toInt()] = false
head++
}
}
arr[char.toInt()] = true
}
val l = s.length - head
max = if (max > l) max else l
return max
}
}