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

 

全部评论

相关推荐

头像
02-26 13:58
门头沟学院 Java
北城_阿亮:把八股背一背,包装一下实习经历项目经历,要是有心思考证就考一考,然后把别人的项目爬到自己github上,包装到简历里,什么三个月?一个月!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务