Leetcode 第三题 Longest Substring Without Repeating Characters

一直以来各种时间不够用,稍微一闲下来,立刻刷了一下第三题。

第三题 Longest Substring Without Repeating Characters,原题是这么说的:

Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for “abcabcbb” is “abc”, which the length is 3. For “bbbbb” the longest substring is “b”, with the length of 1.

也就是说,在不重复字符串的前提下,找到一个给定字符串的最长值。

拿到这道题,脑子里第一反应就是,只用遍历数组,不使用复杂数据类型的,应该是最快的,因为访问数组的下标比较快,只需要三次数组循环就可搞定。迅速开始构思,提交。

毕竟年轻人啊,too navie

使用循环做题,981个测试用例通过,共用了220ms,220毫秒什么概念,只打败了0.77%的人,前三题中最差成绩~~!先把代码贴出来,是循环太多导致速度慢的吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class Solution {
public int lengthOfLongestSubstring(String s) {
boolean flag = false;
char c[] = s.toCharArray();
if (c.length == 1) {
return 1;
}
int len = 0;
// start索引循环
for (int start = 0; start < c.length - 1; start++) {
// end索引循环
for (int end = start; end < c.length; end++) {
if (c.length > end + 1) {
for (int pos = start; pos <= end; pos++) {
if (c[pos] == c[end + 1]) {
len = len > (end - start + 1) ? len : (end - start + 1);
flag = true;
break;
}
if(pos == end){
len = len > (end - start + 2) ? len : (end - start + 2);
}
}
}
if (flag == true) {
flag = false;
break;
}
}
}
return len;
}
}

今天太晚,就不重新实现了,晚安!

0%