码迷,mamicode.com
首页 > 其他好文 > 详细

Longest Substring Without Repeating Characters Leetcode

时间:2017-01-26 01:07:28      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:ret   eating   for   blog   bcb   length   bsp   example   note   

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.

 

以后遇到string要首先想到hashmap啦,two pointers啦什么的。
public class Solution {
    public int lengthOfLongestSubstring(String s) {
        if (s == null || s.length() == 0) {
            return 0;
        }
        int start = 0;
        int end = 0;
        int max = 0;
        Map<Character, Integer> hs = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            if (!hs.containsKey(s.charAt(i)) || (hs.containsKey(s.charAt(i)) && hs.get(s.charAt(i)) < start)) {
                hs.put(s.charAt(i), i);
                end++;
            } else {
                max = Math.max(max, end - start);
                start = hs.get(s.charAt(i)) + 1;
                hs.put(s.charAt(i), i);
                end++;
            }
        }
        max = Math.max(max, end - start);
        return max;
    }
}

这次做的还可以,自己测了test case后一遍就过了。吼吼吼,当然代码还是有冗余,又改良了一下

public class Solution {
    public int lengthOfLongestSubstring(String s) {
        if (s == null || s.length() == 0) {
            return 0;
        }
        int start = 0;
        int end = 0;
        int max = 0;
        Map<Character, Integer> hs = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            if (hs.containsKey(s.charAt(i)) && hs.get(s.charAt(i)) >= start) {
                max = Math.max(max, end - start);
                start = hs.get(s.charAt(i)) + 1;
            }
            hs.put(s.charAt(i), i);
            end++;
        }
        max = Math.max(max, end - start);
        return max;
    }
}

 

Longest Substring Without Repeating Characters Leetcode

标签:ret   eating   for   blog   bcb   length   bsp   example   note   

原文地址:http://www.cnblogs.com/aprilyang/p/6350310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!