leetcode 3---Longest Substring Without Repeating Characters 雙指針 String

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));
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章