leetcode 3

Posted 晴朗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 3相关的知识,希望对你有一定的参考价值。

0(n*n)时间复杂度

注意ASCII的取值范围

只需要确定起始位置即可,暴力

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        if(s.size()==0)return 0;
        int maxlength=0,length=0;
        int MapStr[500];
        for(int i=0;i<s.size();i++) {
            length=0;
            memset(MapStr,0,sizeof(MapStr));
            for(int j=i;j<s.size();j++) {
                if(MapStr[s[j]]==0) {
                    MapStr[s[j]]=1;
                    length++;
                }
                else break;
            }
            if(length>maxlength)
            maxlength=length;
        }
        return maxlength;
    }
};

0(n)

中间加了优化之间吧重复部分跳过相当于遍历两边

 1 class Solution {
 2 public:
 3     int lengthOfLongestSubstring(string s) {
 4         if(s.size()==0)return 0;
 5         int maxlength=0;
 6        int MapStr[300];
 7        int i=0,j=0;
 8        int length=s.size();
 9        memset(MapStr,0,sizeof(MapStr));
10        while(i<length) {
11            if(MapStr[s[i]]) {
12               maxlength=max(i-j,maxlength);
13               while(s[i]!=s[j]) {
14                   MapStr[s[j]]=0;
15                   j++;
16               }
17               i++;j++;
18            }
19            else {
20                MapStr[s[i]]=1;
21                i++;
22            }
23         }
24         maxlength=max(length-j,maxlength);
25         return maxlength;
26     }
27 };

 

以上是关于leetcode 3的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段

LEETCODE 003 找出一个字符串中最长的无重复片段

Leetcode 763 划分字母区间

LeetCode:划分字母区间763

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全