Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: “abcabcbb”
Output: 3
Explanation: The answer is “abc”, with the length of 3.
Example 2:
Input: “bbbbb”
Output: 1
Explanation: The answer is “b”, with the length of 1.
Example 3:
Input: “pwwkew”
Output: 3
Explanation: 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.
思路:
1、设置 beg、end 下标,用于设置遍历的字符子串s[beg:end]
2、若s[end]不属于s[beg:end],则 end 加1,否则,beg加1
3、依次遍历,存储字符子串的最大长度
注意:
1、字符子串s[beg:end]只包含 beg 到 end - 1 下标处的字符
2、使用strings.Contains(string,string) 方法来判断子串是否存在字符串中。若存在,则返回true,否则,返回false
package main
import (
"fmt"
"strings"
)
func lengthOfLongestSubstring(s string) int {
result := 0
if(s == "") {
return result
}
beg := 0
end := 1
for {
if (beg >= len(s)){
break
}
for{
if((end < len(s)) && (strings.Contains(s[beg:end],string(s[end])) == false)){
end += 1
}else {
break
}
}
if (len(s[beg:end]) > result){
result = len(s[beg:end])
}
if (end == len(s)){
return result
}
beg += 1
}
return result
}
func main() {
s := "pwwkew"
ret := lengthOfLongestSubstring(s)
fmt.Println(ret)
}