zoukankan      html  css  js  c++  java
  • 力扣Leetcode 3. 无重复字符的最长子串

    无重复字符的最长子串

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

    示例

    示例 1:

    输入: "abcabcbb"
    输出: 3 
    解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
    

    示例 2:

    输入: "bbbbb"
    输出: 1
    解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
    

    示例 3:

    输入: "pwwkew"
    输出: 3
    解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
         请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
    

    解题思路

    一开始认为只有英文字母 跑测试用例的时候报错的是空格 就扩大了bool mark[]标记集的范围
    实际上还是暴力解决 n²的复杂度 一个个在bool集里判断 如果之前没出现过 长度+1 并且标记为true
    每轮需要重置len 和 标记集
    再从中取出一个max便是最长子序列

    class Solution {
    public:
        int lengthOfLongestSubstring(string s) {
            if(s.size() == 0) return 0;
            int len = 1, max_n = 1; 
            bool mark[100];
            for (int i = 0; i < s.size()-1; i++){
                memset(mark, 0, 100);  len = 1; // 每轮需要重置的值
                mark[s[i] - ' '] = true; // 每个字符的ascii码
            for (int j = i+1; j < s.size(); j++){
                if(mark[s[j] - ' '] != true){
                    len ++;
                    mark[s[j] - ' '] = true;
                    max_n = max(max_n, len);
                }
                else{
                    max_n = max(max_n, len); 
                    break;
                }
            }
        }
        return max_n;
        }
    };
    
  • 相关阅读:
    ACdream群赛(4) B Double Kings
    ACdream群赛(4)总结
    250E Mad Joe
    ZOJ Monthly, November 2012 I Search in the Wiki
    251C Number Transformation
    253D Table with Letters 2
    Codeforces Round #153 (Div. 2) 总结
    ACdream群赛(4) D Draw a Mess
    ZOJ Monthly, November 2012 G Gao The Sequence
    在vs2005/c++中捕获浮点数异常
  • 原文地址:https://www.cnblogs.com/coderzjz/p/12818779.html
Copyright © 2011-2022 走看看