目录
概述
计算无重复字符串长度:
例如:字符串A=‘aaacccsdd’ 那么无重复字符串就是csd,也就是3
示例
代码
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class notRepeatString {
public static void main(String[] args) {
int x = 0;
x = repeatString("abcabcbb");
System.out.println(x);
}
private static int repeatString(String s){
if (s.length() == 0){
return 0;
}
int max = 0;
int left = 0;
HashMap<Character,Integer> map = new HashMap<Character,Integer>();
List<Character> list = new ArrayList<>();
for (int i=0;i<s.length();i++){
//containsKey是检索map是否包含当前索引的值
if (map.containsKey(s.charAt(i))){
//如果包含,那么就算是不重复继续滑动,
left = Math.max(left,map.get(s.charAt(i))+1);
}
map.put(s.charAt(i),i);
//使用Math.max是为了比较每一次,最多的重复数量,i是当前s的索引,left是最大重复数量,+1是因为从0开始的
max = Math.max(max,i-left+1);
}
return max;
}
}