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

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

 

题目:

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.

 

思路:

用一个map存放字符出现的position;用两个指针begin,end指向substr的首末;遇到相同字符时将begin移到该字符之前出现的后一位置,并更新该字符的position。

 

代码:C++ :

class Solution {public:    int lengthOfLongestSubstring(string s) {        if (s.length() <= 1)            return s.length();                int begin = 0;        int end = 0;        map
mapping; int solve = 0; mapping[s[0]] = 0; while (end < s.length() - 1) { end++; if (mapping.find(s[end]) != mapping.end()) { int gap = end - begin; if (gap > solve) solve = gap; begin = mapping[s[end]] + 1 > begin ? mapping[s[end]] + 1 : begin; mapping[s[end]] = end; } else mapping[s[end]] = end; } int gap = end - begin + 1; if (gap > solve) solve = gap; return solve; }};

 

Reference : 

本质上跟我的思路差不多,但是代码很简洁

int lengthOfLongestSubstring(string s) {        vector
dict(256, -1); int maxLen = 0, start = -1; for (int i = 0; i != s.length(); i++) { if (dict[s[i]] > start) start = dict[s[i]]; dict[s[i]] = i; maxLen = max(maxLen, i - start); } return maxLen; }

由此可知:

dict['A']与dict[65]等效,即与ASCII码对应

转载于:https://www.cnblogs.com/gavinxing/p/5186141.html

你可能感兴趣的文章
【零基础学习iOS开发】【02-C语言】08-基本运算
查看>>
Java 将指定字符串连接到此字符串的结尾 concat()
查看>>
Hibernate Criterion
查看>>
Python知识
查看>>
我们为什么要搞长沙.NET技术社区(三)
查看>>
杭电acm Cake
查看>>
js函数中this的指向
查看>>
c++ 引用方式传递数组
查看>>
HBase学习之路 (九)HBase phoenix的使用
查看>>
LeetCode() Remove Duplicates from Sorted Array II
查看>>
【svn】idea svn 文件上会出现一个破书
查看>>
cocos2d-x 3.0 场景切换特效汇总(转)
查看>>
The SortedMap Interface
查看>>
SniperOJ-leak-x86-64
查看>>
bzoj 4260: Codechef REBXOR (01 Trie)
查看>>
学好python
查看>>
css-IE中的border-radius和box-shadow
查看>>
利用bootstrap和webform的异步CRUD及分页
查看>>
HDUOJ 1879继续畅通工程(并查集)
查看>>
OC12_自动释放池
查看>>