zoukankan      html  css  js  c++  java
  • 求最大不重复子串

    import java.util.HashMap;
    import java.util.Scanner;
    
    public class Sort {
        public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            String str = in.next();
            System.out.println(LongestString(str));
    
        }
        public static String LongestString(String s) throws NullPointerException{
            int start=0;//当前子串开始位置
            int len=0;//当前子串长度
            int mstart=0;//最大子串开始位置
            int mlen=0;//最大子串长度
            HashMap<Character,Integer> map=new HashMap<Character,Integer>();
            for(int i=0;i<s.length();i++){
                if(!map.containsKey(s.charAt(i))) {//如果没出现该字符
                    map.put(s.charAt(i), 1);//标志出现
                    len++;
                }
                else{//如果出现过,说明找到一个子串
                    if(len>mlen) {
                        mstart = start;//更新最大子串
                        mlen=len;
                    }
                    while(s.charAt(start)!=s.charAt(i)){//查找新的开始
                        map.remove(s.charAt(start));//去掉非新子串元素
                        start++;
                        len--;
    
                    }
                    start++;
                }
            }
            if(len>mlen) {//循环结束,判断最后子串
                mstart = start;
                mlen=len;
            }
    
            return s.substring(mstart,mstart+mlen);
        }
    }
  • 相关阅读:
    DRF
    DRF
    DRF
    DRF
    RESTful介绍
    DRF parser请求处理流程
    Vue项目的创建
    怎么清除file控件的文件路径
    java用spring实现文件下载
    JS判断元素是否在数组内 阿星小栈
  • 原文地址:https://www.cnblogs.com/Hellorxh/p/13521011.html
Copyright © 2011-2022 走看看