(leetcode) Longest Substring Without Repeating Characters
来源:互联网 发布:服务器性能监控软件 编辑:程序博客网 时间:2024/06/08 08:31
Question :
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.
code :
class Solution {public: int lengthOfLongestSubstring(string s){ if(s.size()<=1) return s.size(); int A[256]; int start = 0,Max = 0; int len = 0; //bool flag = false; for(int i = 0;i<256;i++) A[i]=-1; for(int i = 0;i<s.size();i++) { if(A[s[i]] >= 0) { //flag = true; // len = i-start; int j = A[s[i]]; for(;start<=j;start++) A[s[start]] = -1; } //if(Max<len&&flag == true) Max = len; //if(flag ==false&&Max<(i-start +1)) if(Max<(i-start +1)) { Max = i - start +1; } A[s[i]]=i; } return Max; }};
思想:运用一个start记录当前没有重复字母的字符串的头节点。
1、用字母自身作为下标,刚开始只考虑了26个字母,结果提交上去错误,说包含‘,’之类的字符实例不通过。所以这里是申请256大小的int 数组,存储每一个字符所在的下标。
2、若该字母没出现过则存储下标,并计算当前字母到起始字母start的长度,并跟max比较,比max大,则替换max。
3、出现过,则将该A[s[i]]的下一位记为start。并将前一start到当前start中间的字母置为未出现。之后重复操作。
注:
1、刚开始的想法是遇到s中第i个字母不是第一次出现,则记录当前len长度,len = i - start;
2、如果没遇到相同的字母则len = i- start +1;
但是发现者这样略麻烦,因为i处字母不是第一次出现说明start到i-1处字母都是第一次出现,这个长度已经计算过并跟Max进行了比较,所以在i再次计算就是重复计算了,这里可以省去。
0 0
- 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
- [LeetCode] Longest Substring Without Repeating Characters
- LeetCode 3 - 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] Longest Substring Without Repeating Characters
- [leetcode] Longest Substring Without Repeating Characters
- LeetCode - Longest Substring Without Repeating Characters
- LeetCode 3: Longest Substring Without Repeating Characters
- leetcode-3:Longest Substring Without Repeating Characters
- leetcode之Longest Substring Without Repeating Characters
- c++入门 花落又念折枝
- Metaio in Unity3d 教学--- 二. 创建自己的Application
- phpcms推荐位分组
- 【C语言】02-第一个C程序
- IIS安装及ASPNet开发环境配置
- (leetcode) Longest Substring Without Repeating Characters
- Android GridView(九宫图)
- linux下的umask()函数
- 单例-Map-缓存
- Leetcode_1-132_Diff&Freq
- Jackson 框架,轻易转换JSON
- mysql 全文索引学习
- Cocos2d-x v3.0 正式版 如何创建项目及TestCpp运行
- 我的第一个Servlet