[leetcode Q3] —— Longest Substring Without Repeating Characters

来源:互联网 发布:网络危机管理 编辑:程序博客网 时间:2024/06/05 13:35

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.

寻找无重复的最长子字符串。

思路如下:

  • 用一个数组记录每一种字符最近一次出现的位置
  • 遍历一次原字符串
  • 若当前字符出现过,则将子字符串其实指针指向当前字符上一次出现位置 + 1
class Solution {public:    int lengthOfLongestSubstring(string s) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        int locs[256];//保存字符上一次出现的位置        memset(locs, -1, sizeof(locs));        int idx = -1, max = 0;//idx为当前子串的开始位置-1        for (int i = 0; i < s.size(); i++)        {            if (locs[s[i]] > idx)//如果当前字符出现过,那么当前子串的起始位置为这个字符上一次出现的位置+1            {                idx = locs[s[i]];            }            if (i - idx > max)            {                max = i - idx;            }            locs[s[i]] = i;        }        return max;    }};
0 0
原创粉丝点击