每日一练_30(2021.7.14)无重复最长子串长度:

大佬的核心代码:https://blog.csdn.net/qq_35078688/article/details/105612892  借鉴和学习了一番,很厉害。

import java.util.*;
public class stringLength {
    public static void main(String args[]) {
        System.out.println("请输入字符串:");
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int a = strcmp(s);
        System.out.println("无重复最长子串长度:"+a);
        
    }
    
    static int strcmp(String s) {
        int fs=0;
        Map<Character,Integer> map = new HashMap<>();
        for(int start=0,end=0;end<s.length();end++) {
            char ch = s.charAt(end);
            if(map.containsKey(ch)) {
                start = Math.max(start,map.get(ch));
            }
            fs = Math.max(fs,end-start+1);
            map.put(ch,end+1);
        }
        return fs;
    } 
}

测试结果:

请输入字符串:
abcccd
无重复最长子串长度:3

主要是这个"start",改变起点的位置,就很灵性。

上一篇:【Hadoop开发重点】HDFS 的 API 操作


下一篇:Nodejs服务器跨文件夹获取数据