LeetcodeLongest Substring Without Repeating Characters
Posted wuezs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetcodeLongest Substring Without Repeating Characters相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode.com/problems/longest-substring-without-repeating-characters/
题目:
Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, the answer is "wke"
, with the length of 3. Note that the answer must be a substring, "pwke"
is a subsequence and not a substring.
思路:
实质是求s内的相同字符之间的最大长度 将s将相同字符之间分割为一个个子串 比较长度,所以需要保存前面跟自己相同的字符的位置。
算法:
public int lengthOfLongestSubstring(String s) {
if (s == null || s.length() == 0)
return 0;
int max = 1;
int idx = -1;// 当前子串的起始位置
// idx取-1 是因为当字符串本身就是最长子串时 idx不会被修改 而max需要为s的长度需要加1
Map<String, Integer> maps = new HashMap<String, Integer>();
char c[] = s.toCharArray();
for (int i = 0; i < c.length; i++) {
if (maps.containsKey(c[i] + "") && maps.get(c[i] + "") > idx) {
idx = maps.get(c[i] + "");
}
max = Math.max(max, i - idx);
maps.put(c[i] + "", i);
}
return max;
}
以上是关于LeetcodeLongest Substring Without Repeating Characters的主要内容,如果未能解决你的问题,请参考以下文章
LeetCodeLongest Substring Without Repeating Characters
LeetcodeLongest Palindromic Substring
LeetCodeLongest Substring Without Repeating Characters 解题报告