leetcode-3 Longest Substring Without Repeating Characters经典的动态规划问题
2016-10-02 12:04
519 查看
思路:
首先从第一个字符开始往后计数,每次发现一个字符就这个字符出现的位置改成现在的位置,即map的val值是当前的位置
这个时候我们开始计数的位置还是0 即 j=0,
一旦我们往后不断更新最大的不重复子字符串的长度的时候,
第一个重复的字符出现了,
那么这个时候我们就要更新开始的位置了,
因为什么呢,因为我们的字符串里不能包含两个相同的字符,
这个时候要做的就是将字符开始的位置搬运到这个重复字符第一次出现的位置之后的那个位置上就可以了。
而我们怎么更新这个字符最新出现的位置呢?
在判断重复之后更新 最大的起始位置 起始位置只能大 不能小
Math.max(int a ,int b) :取最大值 ,包含边界值
首先从第一个字符开始往后计数,每次发现一个字符就这个字符出现的位置改成现在的位置,即map的val值是当前的位置
这个时候我们开始计数的位置还是0 即 j=0,
一旦我们往后不断更新最大的不重复子字符串的长度的时候,
第一个重复的字符出现了,
那么这个时候我们就要更新开始的位置了,
因为什么呢,因为我们的字符串里不能包含两个相同的字符,
这个时候要做的就是将字符开始的位置搬运到这个重复字符第一次出现的位置之后的那个位置上就可以了。
而我们怎么更新这个字符最新出现的位置呢?
在判断重复之后更新 最大的起始位置 起始位置只能大 不能小
Math.max(int a ,int b) :取最大值 ,包含边界值
public class Solution { public int lengthOfLongestSubstring(String s) { if(s.length()==0) return 0; int max=0; HashMap<Character,Integer> map=new HashMap<>(); for(int i=0,j=0;i<s.length();++i) { if(map.containsKey(s.charAt(i))) { j=Math.max(j,map.get(s.charAt(i))+1); // j用来表示下次开始查长度的起点 //第一个重复的字符出现了,那么这个时候我们就要更新开始的位置了 } map.put(s.charAt(i),i); max=Math.max(max,i-j+1); } return max; } }
相关文章推荐
- LeetCode题解 || Longest Substring Without Repeating Characters (O(n)算法)问题
- 【LeetCode-面试算法经典-Java实现】【003-Longest Substring Without Repeating Characters(最长非重复子字符串)】
- LeetCode算法问题7 —— Longest Substring Without Repeating Characters
- Leetcode问题解答:3. Longest Substring Without Repeating Characters
- Leetcode之Longest Substring Without Repeating Characters 问题
- LeetCode题解 || Longest Substring Without Repeating Characters (O(n)算法)问题
- 【LeetCode解答三】Longest Substring Without Repeating Characters问题Java解答
- LeetCode: Longest Substring Without Repeating Characters
- [LeetCode] Longest Substring Without Repeating Characters
- [LeetCode] Longest Substring Without Repeating Characters
- [LeetCode] Longest Substring Without Repeating Characters
- LeetCode: Longest Substring Without Repeating Characters
- LeetCode | Longest Substring Without Repeating Characters
- leetcode 23: Longest Substring Without Repeating Characters
- LeetCode3:Longest Substring Without Repeating Characters
- [LeetCode] Longest Substring Without Repeating Characters
- LeetCode_Longest Substring Without Repeating Characters
- [LeetCode] Longest Substring Without Repeating Characters 解题报告
- leetcode Longest Substring Without Repeating Characters
- [leetcode] Longest Substring Without Repeating Characters