Leetcode3 Longest Substring Without Repeating Characters
来源:互联网 发布:ubuntu luvit 编辑:程序博客网 时间:2024/05/16 08:10
我的leetcode代码已经放入github:https://github.com/gaohongbin/leetcode
题目:
Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.
翻译:
给一个字符串,找到最长的没有重复字符的子串。
思路:
题目中给出的字符串都可以用ASCII码来表示,所以我们用一个数组exits[256]来表示字符串中哪些字符出现过。position[256]相应的用来表示字母的位置。max用来记录到上个字符串位置,最长的字符串的长度。start用来记录现在正在遍历的子串的起始位置。
当遍历到一个字母,这个字母在exits中出现过,那么现在查找的这个子串就停止,计算长度length,如果length>max, 则max=length;
如果length<=max,则不做处理。
如果字符串找到的字符在exits[i]中出现过,则下次开始遍历的子串位置从position[i]+1的位置开始。
当然这个题可以不用exits数组,直接用一个position数组就可以,刚开始吧position数组初始化为-1,当然不可能哪个字符的位置在-1,如果position中为-1,则代表相应的字符没有出现过。如果不为-1,则代表相应字符出现过。
代码:
public int lengthOfLongestSubstring(String s) { int length=s.length();if(length==0)return 0;int[] exits=new int[256];int[] position=new int[256];int start=0;int max=0;for(int i=0;i<256;i++){exits[i]=0;position[i]=-1;} for(int i=0;i<length;i++){ if(exits[(int)s.charAt(i)]==0){ exits[(int)s.charAt(i)]=1; position[(int)s.charAt(i)]=i; } else{ max=max>(i-start)?max:i-start; for(int j=0;j<256;j++){ exits[j]=0; } start=position[(int)s.charAt(i)]+1; position[(int)s.charAt(i)]=i; i=start-1; } if(i==length-1){ max=max>(i-start+1)?max:i-start+1; } } return max; }
- LeetCode3:Longest Substring Without Repeating Characters
- [LeetCode3] Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters leetcode3
- LeetCode3 Longest Substring Without Repeating Characters
- LeetCode3:Longest Substring Without Repeating Characters
- leetcode3 longest Substring Without Repeating Characters
- LeetCode3:Longest Substring Without Repeating Characters
- Leetcode3 Longest Substring Without Repeating Characters
- leetcode3--Longest Substring Without Repeating Characters
- leetcode3. Longest Substring Without Repeating Characters
- LeetCode3:Longest Substring Without Repeating Characters
- Leetcode3:Longest Substring Without Repeating Characters
- [leetcode3] Longest Substring Without Repeating Characters
- Leetcode3 : Longest Substring Without Repeating Characters
- LeetCode3. Longest Substring Without Repeating Characters
- LeetCode3. Longest Substring Without Repeating Characters
- leetcode3. Longest Substring Without Repeating Characters
- LeetCode3. Longest Substring Without Repeating Characters
- 三级缓存
- Matlab中断语句
- uGUI事件系统简述及使用方法总结
- 张子阳:如何在30岁前年薪超过30万
- JS设置cookie,删除cookie
- Leetcode3 Longest Substring Without Repeating Characters
- 关于ShareSDK分享的功能
- Database Cloud Service试用二(数据导入)
- Java实现crc16校验 附上校验工具对照。解决长数据校验不正确的问题
- Matlab暂停语句
- Java笔记集合
- Java F-bounded
- Java核心技术第12章(3)
- Matlab回显语句