java 没有重复字符的最长子串 - 最长无复复字符子串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 没有重复字符的最长子串 - 最长无复复字符子串相关的知识,希望对你有一定的参考价值。


	public static int longestNoDupSubstring(String s) {
		if(s==null || s.length()==0) return 0;
		int res = 0;
		Map<Character,Integer> hash = new HashMap<>();//存储字符及其出现的位置
		int start =  0;
		for(int i = 0 ; i < s.length(); i++) {
			char cur = s.charAt(i);
			if(hash.isEmpty() || !hash.containsKey(cur)) {
				hash.put(cur, i);
				continue;
			}else {
				int pre_index_of_cur = hash.get(cur);
				res = res>hash.entrySet().size()?res:hash.entrySet().size();
				for(int j=start;j <= pre_index_of_cur; j++) {
					if(hash.containsKey(s.charAt(j)))
						hash.remove(s.charAt(j));
				}
				start = pre_index_of_cur+1;
				hash.put(cur, i);
			}
		}
		return res;
	}

以上是关于java 没有重复字符的最长子串 - 最长无复复字符子串的主要内容,如果未能解决你的问题,请参考以下文章

求两个输入的字符串的最长公共子串

LeetCode--003--无重复字符的最长子串(java)

java 最长不重复子串,最长无重复字符子串

java 最长不重复子串,最长无重复字符子串

LeetCode 3. 无重复字符的最长子串(动态规划,HashMap,Java)

LeetCode 3. 无重复字符的最长子串(动态规划,HashMap,Java)