zoukankan      html  css  js  c++  java
  • LeetCode:3.Longest Substring Without Repeating Characters

    思路:看到题目首先想到最大字符串匹配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;
        }
  • 相关阅读:
    各种集群服务
    cdn
    网页请求的完整过程
    html
    ajax异步请求技术
    浅谈前端渲染与后端渲染的区别
    html与php
    Ubuntu安装anaconda3
    win10安装Ubuntu系统
    删除排序数组中的重复项
  • 原文地址:https://www.cnblogs.com/huiAlex/p/7978884.html
Copyright © 2011-2022 走看看