leetcode 3---Longest Substring Without Repeating Characters 双指针 String

来源:互联网 发布:如何防御sql注入 编辑:程序博客网 时间:2024/05/22 13:36

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));    }}
0 0
原创粉丝点击