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

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

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.

这题如果想知道是否有重复字符,则扫描每个字母时必定需要有记录操作。所有字符可以放在一个数组里,以字符作为下标存储它们最后一次出现的位置。如果某个字符已经有记录了,而且这个字符的位置在子串左边界的右边(含左边界),说明字符重复了,那么子串的左边界要重新赋值为重复字符的位置的下一个位置,用于把最左边的重复字符去掉。每扫描一个字母就更新一下子串的最长长度。

 

代码如下:

1 class Solution { 2 public: 3     int lengthOfLongestSubstring(string s) { 4         int max_size(0), left_bound(0), str_size(s.length()); 5         int last_positions[256]; 6         memset(last_positions, -1, sizeof(last_positions)); 7  8         for (int i = 0; i < str_size; ++i){ 9             if (last_positions[s[i]] >= left_bound){10                 left_bound = last_positions[s[i]] + 1;11             }12             last_positions[s[i]] = i;13             max_size = max(max_size, i - left_bound + 1);14         }15         return max_size;16     }17 };

 

转载于:https://www.cnblogs.com/fqwCpp/p/5617020.html

你可能感兴趣的文章
IOC容器
查看>>
Windows 2003全面优化
查看>>
URAL 1002 Phone Numbers(KMP+最短路orDP)
查看>>
web_day4_css_宽度
查看>>
electron入门心得
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
我的Hook学习笔记
查看>>
js中的try/catch
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
简述spring中常有的几种advice?
查看>>
整理推荐的CSS属性书写顺序
查看>>
ServerSocket和Socket通信
查看>>
css & input type & search icon
查看>>
源代码的下载和编译读后感
查看>>
Kafka学习笔记
查看>>
Octotree Chrome安装与使用方法
查看>>
Windows 环境下基于 Redis 的 Celery 任务调度模块的实现
查看>>
趣谈Java变量的可见性问题
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>