您的位置:首页 > 编程语言 > Java开发

[Leetcode]Longest Substring Without Repeating Characters java

2015-06-11 13:07 399 查看
难度不高~就是移动窗口,首先想如果没有重复的就是当前长度,如果有重复的就要是窗口右边减去窗口左边,窗口右边可以看成i一直在向前增大,左边只有尽可能左才求出来的最大,但是遇到与窗口右边重复的左边就要移动。然后不断改变统计窗口长度的变量,求最大的。

public int lengthOfLongestSubstring(String s) {
int start = 0;
int max = 0;
for (int i = 0; i < s.length(); i++) {
//i为窗口右边
start = findSame(s.charAt(i), start, i, s);
//start为左边

if (max < i + 1 - start) {
max = i + 1 - start;
}

}
return max;
}

public int findSame(char a, int start, int end, String s) {
int temp = start;
for (int i = start; i <= end; i++) {
if (s.charAt(i) == a && i != end) {
temp = i + 1;
}
}
return temp;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: