首页 > 其他 > 详细

LeetCode:3.Longest Substring Without Repeating Characters

时间:2017-12-04 21:18:08      阅读:192      评论:0      收藏:0      [点我收藏+]

技术分享图片

思路:看到题目首先想到最大字符串匹配KMP算法

 1 public static int lengthOfLongestSubstring(String s) {
 2         int maxLength = 0;
 3         StringBuilder sb = new StringBuilder(s);
 4         a:for(int i = 0;i<sb.length();i++){
 5             StringBuilder sb2 = new StringBuilder("");
 6             sb2.append(sb.substring(i,i+1));
 7             b:for(int j=i+1;j<sb.length();j++){
 8                 c:for(int k =0;k<sb2.length();k++){
 9                     if(!sb.substring(j,j+1).equals(sb2.substring(k,k+1))){
10 
11                     }else{
12                         if(maxLength<j-i)
13                             maxLength = j-i;
14                         break b;
15                     }
16                     if(k == sb2.length())
17                         sb2.append(sb.substring(j,j+1));
18                 }
19             }
20         }
21         return maxLength;
22 }

参考后代码

public static int lengthOfLongestSubstring(String s) {
        int n = s.length(), ans = 0;
        Map<Character, Integer> map = new HashMap<>(); // current index of character
        // try to extend the range [i, j]
        for (int j = 0, i = 0; j < n; j++) {
            if (map.containsKey(s.charAt(j))){
                i = Math.max(map.get(s.charAt(j)), i);
            }
            ans = Math.max(ans, j - i + 1);
            map.put(s.charAt(j), j + 1);
        }
        return ans;
    }

 

LeetCode:3.Longest Substring Without Repeating Characters

原文:http://www.cnblogs.com/ErMengNJUniverser/p/7978884.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!