Java-LeetCode-Longest Substring Without Repeating Characters
2016-09-07 22:02
501 查看
Given a string, find the length of the longestsubstring 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 theanswer must be a substring, "pwke" is a subsequence andnot a substring.
public class Solution {
public int lengthOfLongestSubstring(String s) {
if(s == null){//判断字符串的合法性
return 0;
}
int result = 0;//保存子字符串长度
int start = 0;//字符起始位置
boolean[] flag = new boolean[256];
char[] arr = s.toCharArray();
for(int i = 0; i < arr.length; i++){
char current = arr[i];
if(flag[current]){//当前的字符已经访问过了,记录子串的长度。然后,重定向start
result = Math.max(result, i - start);
//重定向字符
for(int k = start; k < i; k++){
if(arr[k] == current){//判断相邻字符是否一样
start = k + 1;
break;
}
flag[arr[k]] = false;//将之前访问过的字符的标志重新设为false
}
}else{
flag[current] = true;
}
}
result = Math.max(arr.length - start, result);
return result;
}
}
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 theanswer must be a substring, "pwke" is a subsequence andnot a substring.
public class Solution {
public int lengthOfLongestSubstring(String s) {
if(s == null){//判断字符串的合法性
return 0;
}
int result = 0;//保存子字符串长度
int start = 0;//字符起始位置
boolean[] flag = new boolean[256];
char[] arr = s.toCharArray();
for(int i = 0; i < arr.length; i++){
char current = arr[i];
if(flag[current]){//当前的字符已经访问过了,记录子串的长度。然后,重定向start
result = Math.max(result, i - start);
//重定向字符
for(int k = start; k < i; k++){
if(arr[k] == current){//判断相邻字符是否一样
start = k + 1;
break;
}
flag[arr[k]] = false;//将之前访问过的字符的标志重新设为false
}
}else{
flag[current] = true;
}
}
result = Math.max(arr.length - start, result);
return result;
}
}
相关文章推荐
- 【JAVA、C++】LeetCode 003 Longest Substring Without Repeating Characters
- LeetCode 第三题(Longest Substring Without Repeating Characters)Java
- Java [leetcode 3] Longest Substring Without Repeating Characters
- [leetcode-3]Longest Substring Without Repeating Characters(java)
- 4000 【LeetCode】 Longest Substring Without Repeating Characters(Java)
- java_LeetCode_3--Longest Substring Without Repeating Characters
- Java Leetcode Longest Substring Without Repeating Characters
- leetCode Q3:Longest Substring Without Repeating Characters(java)
- leetcode_java_Longest Substring Without Repeating Characters
- LeetCode : Longest Substring Without Repeating Characters [java]
- 【LeetCode-面试算法经典-Java实现】【003-Longest Substring Without Repeating Characters(最长非重复子字符串)】
- 3. Longest Substring Without Repeating Characters leetcode java
- LeetCode_3_LongestSubstringWithoutRepeatingCharacters(Java Code)
- [LeetCode][Java] Longest Substring Without Repeating Characters
- leetcode 003 Longest Substring Without Repeating Characters(java)
- [LeetCode][3]Longest Substring Without Repeating Characters解析 -Java实现
- [Leetcode] Longest Substring Without Repeating Characters (Java)
- leetcode-java.T003_LongestSubstringWithoutRepeatingCharacters 给定一个字符串,找字符中的最大非重复子串
- Longest Substring Without Repeating Characters leetcode java
- Longest Substring Without Repeating Characters leetcode java