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;
}
}
本文针对LeetCode上的第三题——寻找字符串中不重复字符的最长子串,提供了一种使用Java实现的有效解决方案。通过示例说明了算法的具体应用,如abcabcbb的最长子串为abc,长度为3。
814

被折叠的 条评论
为什么被折叠?



