[leetcode] Longest Substring Without Repeating Charactors最长无重复子序列
2016-03-09 16:52
288 查看
题目
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 of1.
分析
1.一个字符串中可能有很多的无重复子串2.无重复子串肯定是互相独立的,否则某个子串其中必定包含重复的字符。
算法
1.建立两个指针lft, rgt,分别指向无重复子序列的左端和右端2.建立一个布尔数组,长为128,记录ASCII字符,初始为false,遍历之后改为true
3.每次检查有指针所指字符的标签,
如果为false(即无重复),则标签改为true,有指针向前移,子序列长度为rgt-lft;
如果为true(即之前遍历过了),则将lft所指字符标签改为false(清除遍历记录,更新子序列头部),左指针前移。
算法只将字符串遍历了一遍,因此复杂度为O(n).
知识点
左右指针,flag表代码
class Solution { public: int lengthOfLongestSubstring(string s) { int len = s.length(); if( len < 2 ) return len; int rgt = 0, lft = 0, maxlen = 0; bool sign[128] = {false}; while( rgt < len ){ if( sign[ s[rgt] ] == false ){ sign[ s[rgt] ] = true; rgt++; if(maxlen < rgt-lft) maxlen = rgt - lft; } else{ sign[ s[lft] ] = false; lft++; } } return maxlen; } };
相关文章推荐
- iOS生命周期及loadView、viewDidLoad及viewDidUnload的关系
- 《我是一只IT小小鸟》阅读笔记
- Android 数据库管理— — —升级数据库
- Android 把图片进行压缩
- CoreData 深入理解2 (iOS5 以后线程安全与同步)
- [css] 清除浮动的方式总结
- codeigniter整合smarty
- 226. Invert Binary Tree
- 154. Find Minimum in Rotated Sorted Array II
- QT模拟时钟
- 全排列
- MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
- 人脸识别,人脸关键点检测算法
- 一个杯子的测试用例
- alibaba/druid 使用ConfigFilter
- linux-mysql-rpm安装方式
- Swift学习之UILabel基本用法
- mysql超一亿条记录中快速查询总记录条数
- 2 million pixels RTMP protocol IP camera,Push stream to FMS/RED5/WOWZA
- UIResponder