大佬的核心代码: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",改变起点的位置,就很灵性。