Leetcode3.无重复字符的最长子串

题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

题目思路:遍历一次暴力即可,用一个flag标记数组,边遍历边标记已经出现了的字符(注意不是字母),当出现重复字符,则取消该重复字符前面的字符的标记,然后与max变量进行比较。是一道水题

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int flag[500] = { 0 };//标记数组
        int al = 0;
	int max = 0;//存储最大长度
        int l=s.length();
        if(l==1)return 1;
        	for (int i = 0; i < l; i++) {
			if (flag[s[i]]) {
				max = max < al ? al : max;//比较最大长度
				int j = i - al;
				for (; j <= i; j++) {
					if (s[j] == s[i]) {
						break;
					}
					else {
						flag[s[j]] = 0;//清除重复字符前面的字符标记
					}
				}
				al =al-( j-(i-al));//计算当前不重复字符的长度
			}
			else {
				flag[s[i]] = 1;//标记
				al++;
			}
		}
        max = max < al ? al : max;//比较最大长度
        return max;
        
        
        
        
        
        
    }
};

 

全部评论

相关推荐

10-04 17:25
门头沟学院 Java
snqing:Java已经饱和了,根本不缺人。随便一个2000工资的都200人起投递
点赞 评论 收藏
分享
牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务