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 subsequence and not a substring.
題意:找到最大不含重複字符的子序列
思路:雙指針,一個指針負責向前走,構造一個StringBuilder進行存儲,當遇到重複的了就把StringBuilder中的第一個元素到到重複的元素的位置之間的元素全部刪除,
代碼
package leedcode;
public class longestSubstring {
public static int lengthOfLongestSubstring(String s) {
if (s == null || s.length() == 0)
return 0;
if (s.length() == 1)
return 1;
StringBuilder current = new StringBuilder();
int max = 0;
for (int i = 0; i < s.length(); i++) {
int indexOf = current.indexOf(String.valueOf(s.charAt(i)));
if (indexOf != -1) {
if (current.length() > max) {
max = current.length();
}
current.delete(0, indexOf + 1);
}
current.append(s.charAt(i));
}
if (current.length() > max) {
max = current.length();
}
return max;
}
public static void main(String[] args) {
String s = "abdeas";
System.out.print(lengthOfLongestSubstring(s));
}
}