
【解题思路】
对每一个位置的字符,向前查询不重复的最大长度,并记录。最后比较得到全局最大不重复字符长度。
class Solution {
public int lengthOfLongestSubstring(String s) {
if(s.equals("")) return 0;
int len = s.length();
int[] maxLen = new int[len];
maxLen[0] = 1;
int ans = 0;
for(int i = 1; i < len; i++)
{
maxLen[i] = findLength(s, i-1, s.charAt(i), maxLen);
}
for(int i = 0; i < len; i++)
{
if(maxLen[i] > ans)
{
ans = maxLen[i];
}
}
return ans;
}
public int findLength(String s, int point, char c, int[] maxLen)
{
int reVal = 1;
int thisLen = maxLen[point];
for(int i = point; thisLen > 0; i--)
{
if(s.charAt(i) == c)
{
break;
}
else
{
reVal++;
thisLen--;
}
}
return reVal;
}
}
滑动窗口最大子串
该博客探讨了一种解决字符串中找到最长不重复字符子串的算法。通过使用滑动窗口的方法,对于每个字符,向前查找不重复的最大长度并记录,最终找出全局的最大不重复字符长度。文章详细介绍了算法实现过程,包括`lengthOfLongestSubstring`和`findLength`两个关键函数,适合对字符串处理和算法感兴趣的读者阅读。
281

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



