LeetCode:第三题

来源:互联网 发布:电脑连不上网络 编辑:程序博客网 时间:2024/06/02 03:49

LeetCode刷题第三题,参考牛客网大神的解法,利用Java实现第三题,题目如下:

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 subsequenceand not a substring.


解法如下:

class class Solution {
public int lengthOfLongestSubstring(String s) {
//首先判断是否为空
if(s == null || s.length()== 0) return 0;
//新建一个map来存储char
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
int leftBound = 0;
int max = 0;
for(int i=0; i < s.length(); ++i) {
char c = s.charAt(i);
//窗口左边可能为下一个字符,或者不变
leftBound = Math.max(leftBound, (map.containsKey(c))? map.get(c)+1 : 0);
max = Math.max(max, i-leftBound+1);//当前窗口长度
map.put(c,i);
}
return max;
}
}