标签:
题目链接: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; }
【Leetcode】Longest Substring Without Repeating Characters
标签:
原文地址:http://blog.csdn.net/yeqiuzs/article/details/51520483