Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.

Hide Tags

Hash Table Two Pointers String

 

    这题有前面的基础其实很简单的,http://www.cnblogs.com/Azhu/p/4127606.html
    思路类似,使用双索引表示目标的头尾,左索引指向能去的第一个,右索引指向不取的第一个,那么初始化均为0,长度就是右-左,两者相等表示子串为空。
注意:
  • 子串与子序列不同,子串是需要连续的,子序列只要求顺序,不要求连续。
  • 表示好子串(窗口)很重要,确认清楚索引指向是否在窗口内。
  • 因为需要标记字符,所以直观想到的是hash_map or  unordered_map,不过基于AscII 只要一个128 位的bool 数组,discuss 他们声明为256,不过用128通过了。
  • 数组下标如果直接使用字符好像隐式转换失败,需要加上强制转换。

算法实现:

  1. 初始化窗口索引lft=rgt=0,同时初始化标记数组,表示那个一个字符是否在窗口内。
  2. 右索引遍历字符串
    • 如果遇到不在窗口内的字符rgt+1,改变flag,计算更新最长子串长度。
    • 如果在窗口内,lft+1,修改flag,重新判断rgt 位置的字符。

我写的代码:

 #include <iostream>
#include <string>
using namespace std; class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n = s.length();
if(n<) return n ;
int lft = ,rgt =,maxlen = ;
bool sign[] = {false};
while(rgt<n){
// cout<<lft<<" "<<rgt<<" "<<maxlen<<endl;
if(sign[(int)s[rgt]]==false){
sign[(int)s[rgt]]=true;
rgt++;
if(maxlen<rgt-lft) maxlen = rgt - lft;
continue;
}
sign[(int)s[lft]] = false;
lft++;
}
return maxlen;
}
}; int main()
{
string s= "242522f23r23rt432twrfs122";
Solution sol;
cout<<sol.lengthOfLongestSubstring(s)<<endl;
return ;
}

[LeetCode] Longest Substring Without Repeating Characters最长无重复子串的更多相关文章

  1. [LeetCode] Longest Substring Without Repeating Characters 最长无重复子串

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

  2. [LeetCode] Longest Substring Without Repeating Characters 最长无重复字符的子串

    Given a string, find the length of the longest substring without repeating characters. Example 1: In ...

  3. [LeetCode] Longest Substring Without Repeating Characters 最长无重复字符的子串 C++实现java实现

    最长无重复字符的子串 Given a string, find the length of the longest substring without repeating characters. Ex ...

  4. [LeetCode] 3.Longest Substring Without Repeating Characters 最长无重复子串

    Given a string, find the length of the longest substring without repeating characters. Example 1: In ...

  5. LeetCode Longest Substring Without Repeating Characters 最长不重复子串

    题意:给一字符串,求一个子串的长度,该子串满足所有字符都不重复.字符可能包含标点之类的,不仅仅是字母.按ASCII码算,就有2^8=128个. 思路:从左到右扫每个字符,判断该字符距离上一次出现的距离 ...

  6. 【LeetCode】3.Longest Substring Without Repeating Characters 最长无重复子串

    题目: Given a string, find the length of the longest substring without repeating characters. Examples: ...

  7. leetcode 3 Longest Substring Without Repeating Characters最长无重复子串

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

  8. 【LeetCode每天一题】Longest Substring Without Repeating Characters(最长无重复的字串)

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

  9. 3. Longest Substring Without Repeating Characters - 最长无重复字符子串-Medium

    Examples: Description: Given a string, find the length of the longest substring without repeating ch ...

随机推荐

  1. ZendFramework-2.4 源代码 - ViewManager类图

  2. JZOJ 5842

    Description 给定一个n*m 的 01 矩阵,求包含[l,r]个 1 的子矩形个数. Input 第一行,两个正整数n,m.接下来n 行,每行一个长度为 m 的 01 串,表示给定的矩阵.接 ...

  3. JZOJ 1267. 路障

    1267. 路障(block.pas/c/cpp) (File IO): input:block.in output:block.out Time Limits: 1000 ms  Memory Li ...

  4. 27.28. VUE学习之--事件修饰符之stop&capture&self&once实例详解

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. hihocoder1015 kmp算法

    #1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...

  6. setTimeout相关整理

    setTimeout里面函数有无双引号的区别 双引号中的作用域不捕捉局部变量,不用双引号包着的是捕捉局部作用域 var a = function(){ alert(1111) } function a ...

  7. Git的安装及常用操作

    一.Git的安装 1.下载Git,官网地址为:https://git-scm.com/downloads.     2.下载完成之后,双击目录进行安装 3.选择安装目录 4.选择组件,默认即可 5.设 ...

  8. 图文教程:为认证考试搭建Hyper-V家庭实验室

    [TechTarget中国原创] 在过去20年里,我已经帮助成千上万人准备他们的IT认证考试.虽然有很多方法通过技术来获得经验,组建一个Hyper-V家庭实验室是个利用不同应用程序来获得经验的廉价并有 ...

  9. 【Maximum Subarray 】cpp

    题目: Find the contiguous subarray within an array (containing at least one number) which has the larg ...

  10. 混淆矩阵、准确率、召回率、ROC曲线、AUC

    混淆矩阵.准确率.召回率.ROC曲线.AUC 假设有一个用来对猫(cats).狗(dogs).兔子(rabbits)进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结.假设总共 ...