求字符串中的最长无重复子串的长度,例如"abcabcbb",最长无重复子串为"abc",长度为3。因为要求无重复,因此想到要用HashMap来保存,因为HashMap的键值不能重复。将要存入的字符作为key,字符在字符串中的下标作为value,如果map中已经存有该字符,则删掉该字符以及字符串中该字符之前的所有字符,然后再存入。例如字符串为"abcbd",如已存入abc,现在要存b,则删掉ab,存入(b,3);max为map中存放最多字符时的数值。
public class LongestSubstring {
public static void main(String[] args) {
LongestSubstring ls=new LongestSubstring();
String str="bbbbb";
int max=ls.lengthOfLongestSubstring(str);
System.out.println(max);
}
public int lengthOfLongestSubstring(String s) {
int len=s.length();
int start=0; //无重复子串在字符串中的开始位置
int max=0; //保存最长无重复字符子串的长度
HashMap
map=new HashMap
(); //用map来保存,map的key不能重复,因此key为字符
for(int i=0;i