[leetcode] 3 Longest Substring Without Repeating Characters

来源:互联网 发布:打电话变声的软件 编辑:程序博客网 时间:2024/06/06 00:54

题目地址:https://leetcode.com/problems/longest-substring-without-repeating-characters/description/

题目描述:Given a string, find the length of the longest substring without repeating characters.
Examples:
Given “abcabcbb”, the answer is “abc”, which the length is 3.
Given “bbbbb”, the answer is “b”, with the length of 1.
Given “pwwkew”, the answer is “wke”, with the length of 3. Note that the answer must be a substring, “pwke” is a subsequence and not a substring.

我的代码:

class Solution {public:    int lengthOfLongestSubstring(string s) {        int n=s.size();        if(n<2)return n;        int max=0;        int start=-1;        int a[200];        for(int i=0;i<200;i++)a[i]=-1;        for(int i=0;i<n;i++){            if(a[s[i]]>start)start=a[s[i]];            a[s[i]]=i;            if(i-start>max)max=i-start;        }        return max;    }};

解题思路
要求最长无重复连续子串,对于以位置i结束的子串而言,只需找到其前面最早出现重复的位置即可,利用动态规划,最早出现重复的位置有两种可能,一种是以i-1位置结束的最长字串里面有与i位置的字符相同的字符时,重复最早出现在该相同字符处,即前一个与i位置字符相同的字符处,另一种就是与i-1的重复位置相同。
因此,我们只需要两个变量,一个是前一个与i位置字符相同的字符的位置,这个可以用数组保存所有字符的最后出现位置,并同步更新,另一个就是i-1位置处的重复位置,就是我们需要的动态规划变量。

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝发脾气摔东西躺地上怎么办 生气拿棍子打了孩子怎么办 小宝宝被蚊虫咬了怎么办 小宝宝被蚊子咬了怎么办 衣架打小孩淤青怎么办 1岁宝宝有痰咳嗽怎么办 1岁宝宝咳嗽有痰怎么办 孩子爱动手打家长怎么办 不小心有了孩子该怎么办 2岁多宝宝干咳怎么办 2岁宝宝咳嗽无痰怎么办 打了孩子后悔了怎么办 12小孩脾气很犟怎么办 被学生气着了怎么办 1岁宝宝轻微咳嗽怎么办 4岁宝宝突然呕吐怎么办 4岁儿童突然呕吐怎么办 四岁儿童90身高怎么办 24个月宝宝缺钙怎么办 狗狗总是要人陪着玩怎么办 成年了还是很皮怎么办 三岁儿子太调皮怎么办 10个月宝宝粘人怎么办 6个月宝宝粘人怎么办 9个月宝宝偏矮怎么办 1岁宝宝粘人爱哭怎么办 宝宝2岁半胆小怎么办 5岁宝宝超级粘人怎么办 狗狗吃饭要人喂怎么办 十个月宝宝认人怎么办 一岁宝宝粘人怎么办 9个月宝宝粘妈妈怎么办 一岁的宝宝呕吐怎么办 宝宝一岁八个月太粘人了怎么办 六个月的宝宝好粘人怎么办 两岁半宝宝说话突然结巴了怎么办 1岁宝宝突然呕吐怎么办 宝宝吃坏了呕吐怎么办 1岁宝宝吃饭爱玩怎么办 7岁儿童半夜呕吐怎么办 一个月宝宝粘人怎么办