订阅博客
收藏博客
微博分享
QQ空间分享

美女漫画,算法题:无重复字符的最长子串,墨子

频道:娱乐消息 标签:承兑汇票鸡鸡头 时间:2019年06月08日 浏览:197次 评论:0条

   &nbearpodssp;     LeeCode第三题,难度中等



    给定一个字符串,请你找出其间不含有重复字符的 最长子串 的长度。


示例1:

输入: "abcabcbb"输出: 3 解说: 由于无重复字符的最长子串是 "abc",所以其长度为 3。

示例2:

输入: "bbbbb"输出: 1解说: 由于无重复字符的最长子串是 "b",所以穿越之九峰抗战其长度为 1。

示例3:

输入: "pwwkew"输出: 美人漫画,算法题:无重复字符的最长子串,墨子3解说: 由于无重复字符的最长子串是 "wke",所以其长度为&nb黄山学院sp;3。     请注意,你的答案有必要是 子串 美人漫画,算法题:无重复字符的最长子串,墨子;的长度,"pwke" 是一个子序列美人漫画,算法题:无重复字符的最长子串,墨子,不是子串。



01

暴力破解


遍历每个字符 x ,顺次求出 x 后面无重复子串的长度,取最大值回来。

public int lengthOfLongestSubstring(String s) {    int n = s.length();    int max = 0;    美人漫画,算法题:无重复字符的最长子串,墨子char[] a246天天好彩rr = s.toCharArray();    for(int i = 0; i < n; i++){        max = Math.max(getLength(i, n, arr), max);    }   媚媚的 return max;}
//用set去重,获取子串长度 private int getLength(int start,int 美人漫画,算法题:无重复字符的最长子串,墨子n,char[] arr){ Set<Character> set = new HashSet<>(); for(int j = start;赵照 j < n; j++){ if(set.contains(arr[打臀缝j])){ return set.size(); } set.add(arr[j]); } return set.size();}


履行代码:

输入"abcabcbb"输出3预期成果3


提交代码:

履行用时 : 131 ms, 在Longest Substring Without Repeating Charact鼻子ersJava提交中打败了20.34% 的用户内存耗费 : 86.1 MB, 在Longest Substring Without Repeating CharactersJava提交狮城网中打败了8.42%virtual 的用户


剖析:

    功率一言难尽,可是逻辑好了解:求出每一种成果,两两比较得出最大值。


时刻复杂度:O(n)。

空间复杂度:O(n)。



02

滑动窗口


界说两个指针 i 和 j ,j 先往前走,假如当时元素已存在map中,则将 i 的方位变更到重复元素的方位,最终将当时元素放到map中。

public int lengthOfLongestSubstring(String s) {    int ans = 0;    //i指针   &美人漫画,算法题:无重复字符的最长子串,墨子nbsp;int i = 0;    Map<Character, Integer> map = new HashMap<>超级送宝体系;();新化天气预报    //j指针,j先走    for(inZealandiat j 女生相片= 0; j < 曾毅s.length(); j++ ){        //假如元素重复,则改动 i 的方位。        if(map.containsKey(s.charAt(j))){            i = Math.max(i, map.get(s.charAt(j)));&nbs大公鸡p;       }        ans = Math.max(ans, j + 1 - i);        map.put(s.charAt(j), j + 1);  absolute  }    return ans;}


履行代码:

输入"abcabcbb"输出3预期成果3


提交代码:

履行用时 : 22 ms, 在Longest Substring Without Repeating CharactersJava提交中打败了83.85% 的用户内存耗费 : 36.6 MB, 在Longest Substring Without Repeating CharactersJava提交中打败了96.75% 的用户



剖析:

    功率瞬间提上去。


时刻复杂度:O(n)。最差的状况,i 和 j 将一切的元素都走一美人漫画,算法题:无重复字符的最长子串,墨子遍O(2n)=(n),如“aaaaa”。

空间复杂度:O(n)。



原题链接:

https:/虾滑的做法/leetcode.com/proble翻开你的心结ms/longest-substring-without-repeating-characters/

https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/




点击留言~