leet code 1624解题

79 阅读1分钟

题目:给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,计算长度时不含这两个字符。如果不存在这样的子字符串,返回 -1 。

思路:循环把值放到哈希里直到第二次重复值出现,则删除第一次的坐标-1就得出最大值来

public Integer test(String s){
	//定义哈希表
	HashMap<Character, Integer> objectObjectHashMap = new HashMap<>();
	//定义默认值
	Integer res = -1;
	for (int i = 1; i < s.length(); i++) {
		//如果哈希表中不存在重复的值则一直往里插入
		if (!objectObjectHashMap.containsKey(s.charAt(i))){
			objectObjectHashMap.put(s.charAt(i), i);
		}
		Integer index = objectObjectHashMap.get(s.charAt(i));
		//获取重复的下标值,使用当前循环坐标减去第一次出现重复数据的坐标再减去当前坐标数
		res = Math.max(res , index -i -1);
	}
	return res;
}