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;
        
        
        
        
        
        
    }
};

 

全部评论

相关推荐

头像
03-30 21:02
已编辑
武汉大学 Java
ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务