博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Algorithm 03_Longest Substring Without Repeating Characters
阅读量:5316 次
发布时间:2019-06-14

本文共 1656 字,大约阅读时间需要 5 分钟。

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.

Tags: Hash Table, Two Pointers, String

 

1 class Solution { 2 public: 3     int lengthOfLongestSubstring(string s) { 4         //从前往后开始,后面一旦碰到『当前字符串中』前面出现过的字符,则直接跳到前面那个重复字符的下一个字符开始新字符串统计。 5         //既然是比较当前字符串,必须要有一个值来保存当前字符串从什么位置之后开始。可以初始化一个int curSubStartPosPre = -1表示 6         //一开始是从-1后面也就是0开始统计的,字符串长度就是后面的index-(-1),如1-(-1)=2表示当前字符串长度达到了2。 7          8         //重复出现的判断方法:构建一个以字符为键的数组,因为字符不超过256,可构建int lastAppearPos[256],存储每个字符上一次 9         //出现的位置,当扫描到一个字符时,查看数组中对应值lastAppearPos[字符],如果大于curSubStartPosPre,说明这个字符上一次10         //出现位置在当前字符串中,也就意味着当前字符串出现重复。11         12         //随着字符的移动,当前的长度为index-curSubStartPosPre。保存一个max来表示最大值,如果当前长度大于max则更新max。13         14         //lastAppearPos[256]:本来是index对应字符,现在以字符为下标对应index,完成hash table的构建。因为直接比较的是字符,15         //用hash table可以实现o(1)的复杂度。16         17         int curSubStartPosPre = -1;18         int lastAppearPos[256];19         int max=0;20         memset(lastAppearPos, -1, sizeof(lastAppearPos));21         int i=0;22         while(i
curSubStartPosPre){24 curSubStartPosPre = lastAppearPos[s[i]];25 }26 if(i-curSubStartPosPre > max){27 max = i-curSubStartPosPre;28 }29 30 lastAppearPos[s[i]] = i;31 i++;32 }33 return max;34 35 }36 };

 

 

转载于:https://www.cnblogs.com/chen0958/p/4356110.html

你可能感兴趣的文章
Excel-逻辑函数
查看>>
面对问题,如何去分析?(日报问题)
查看>>
数据分析-业务知识
查看>>
nodejs vs python
查看>>
poj-1410 Intersection
查看>>
Java多线程基础(一)
查看>>
TCP粘包拆包问题
查看>>
SQL Server中利用正则表达式替换字符串
查看>>
POJ 1015 Jury Compromise(双塔dp)
查看>>
论三星输入法的好坏
查看>>
Linux 终端连接工具 XShell v6.0.01 企业便携版
查看>>
JS写一个简单日历
查看>>
Python 发 邮件
查看>>
mysql忘记密码的解决办法
查看>>
全面分析Java的垃圾回收机制2
查看>>
[Code Festival 2017 qual A] C: Palindromic Matrix
查看>>
修改博客园css样式
查看>>
Python3 高阶函数
查看>>
初始面向对象
查看>>
leetcode Letter Combinations of a Phone Number
查看>>