zoukankan      html  css  js  c++  java
  • leetcode(3)无重复字符的最长子串

    无重复字符的最长子串

    解题思想:滑动窗口

    方法1

    class Solution {
        public int lengthOfLongestSubstring(String s) {
            int len = s.length();
            if(len == 0){
                return 0;
            }
            int begin = 0;
            int max = 1;
            String sub = null;
            int index = 0;
            for(int i=1;i<len;i++){
                sub = s.substring(begin,i);
                index = sub.indexOf(s.charAt(i));
                if(index!=-1){
                   if(max<i-begin){
                       max = i-begin;
                   }
                   begin += index+1; 
                }
            }
            if(max<len-begin){
                max = len - begin;
            }
            return max;
        }
    }

     方法2

    class Solution {
        public int lengthOfLongestSubstring(String s) {
            int len = s.length();
            if(len == 0){
                return 0;
            }
            int begin = 0;
            int max = 1;
            Integer index = 0;
            char c = 0;
            Map<Character,Integer> map = new HashMap<>();
            map.put(s.charAt(0),0);
            for(int i=1;i<len;i++){
                c = s.charAt(i);
                index = map.get(c);
                if(index!=null&&index>=begin){
                   if(max<i-begin){
                       max = i-begin;
                   }
                   begin = index+1; 
                }
                map.put(c,i);
            }
            if(max<len-begin){
                max = len - begin;
            }
            return max;
        }
    }
  • 相关阅读:
    Linux 命令[5]:rmdir
    Linux 命令[4]:pwd,date
    Linux 命令[0]:起航
    Linux 命令[3]:cd
    vscode插件
    Object.freeze()
    插件
    前端开发调试线上代码
    前端自动化测试是浪费时间还是节约时间?
    踩坑之用lrz插件进行图片压缩
  • 原文地址:https://www.cnblogs.com/erdanyang/p/11066498.html
Copyright © 2011-2022 走看看