博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode] 3. Longest Substring Without Repeating Characters
阅读量:4937 次
发布时间:2019-06-11

本文共 1928 字,大约阅读时间需要 6 分钟。

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring"pwke" is a subsequence and not a substring.


我的基本思路:

max记录到目前为止数到的子字符串中最长的长度;

current记录当前数到的子字符串的长度;

startPos记录当前数到的子字符串的起始位置;

sucket[a]表示字符a是否已存在与子字符串中(因为总共只有256中可能的字符,因此直接存在一个长为256的数组中即可,1表示已存在,0表示不存在);

每操作一次就更新一次max

如果字符串s为空,直接返回0;

首先将s第一个字符看作当前子字符串,startPos = 0, current = 1;

用 i 表示当前子字符串的结束坐标,从 1 移到 s 的最后一个字符;

在移动过程中,如果 i 处字符已出现,将startPos 移到子字符串中和 i 处字符相同的字符位置下一位并更新current;

循环结束后max即为所求。


 

我的代码如下:

class Solution {public:    int lengthOfLongestSubstring(string s) {        if (s.length() == 0) return 0;        // bucket[a] means whether the character a is already in the substring        // 1 means yes, 0 means not        int* bucket = new int[256];        for (int i = 0; i < 256; i++) bucket[i] = 0;        bucket[s[0]] = 1;        //max stores the max length of all substrings        //current stores the length of current substring        //startPos stores the start position of current substring        int max = 1, current = 1, startPos = 0;        for (int i = 1; i < s.length(); i++) {            // refresh the value of max            if (current > max) max = current;            // if the character s[i] is already in the substring            if (bucket[s[i]]) {                for (int j = startPos; j < i; j++) {                    startPos++;                    if (s[j] == s[i]) break;                    bucket[s[j]] = 0;                    current--;                }            } else {                bucket[s[i]] = 1;                current++;            }        }        if (current > max) max = current;        return max;    }};

 

转载于:https://www.cnblogs.com/zmj97/p/7526841.html

你可能感兴趣的文章
h.264 率失真优化
查看>>
【转】拓扑排序入门
查看>>
Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别
查看>>
How to install 64-bit Google Chrome 28+ on 64-bit RHEL/CentOS 6 or 7
查看>>
搭建LNAMP环境(三)- 源码安装Apache2.4
查看>>
linux --> fork()详解
查看>>
Spring注解 开发
查看>>
#!/bin/bash(转)
查看>>
BZOJ4589 Hard Nim(博弈+FWT)
查看>>
hdu 2473 Junk-Mail Filter 并查集删点,模板题
查看>>
【Maps】【搜狗】
查看>>
Linux命令详解-whatis
查看>>
分组求和
查看>>
eclipse 忽略 target 设置
查看>>
Reptile:requests代理IP
查看>>
HTML5应用缓存与Web Workers
查看>>
【并行计算-CUDA开发】英伟达硬件解码器分析
查看>>
Axure原型制作规范
查看>>
华阳彩票渠道管理平台
查看>>
大四中软实习笔记20130301
查看>>