LeetCode 用js实现无重复字符的最长子串

RT,各位牛友们有没有好的思路可以借鉴下的#笔试题目#
全部评论
只会python。。。 思路和一楼的一样 def lengthOfLongestSubstring(s):     used = {}     maxl = left = 0     for i in range(len(s)):         if s[i] in used and left <= used[s[i]]:             left = used[s[i]]+1         else:             maxl = max(maxl, i - left + 1)         used[s[i]] = i     return maxl
点赞 回复
分享
发布于 2018-04-24 22:40
用两个指针,一个指向不重复子串的最前面,一个指向子串最后面,用Set或数组记录子串里面出现过的字母,然后前面的指针开始移动,如果遇到子串中重复的字母,后面的指针开始移动直到去掉这个重复的字母,在这个过程中记录子串最大值即可。
点赞 回复
分享
发布于 2018-04-07 22:08
联易融
校招火热招聘中
官网直投
js没有map?
点赞 回复
分享
发布于 2018-04-08 00:09
用数组啊,a-z26个字母,定义一个26个元素的数组,并用一个整数temp来记录连续不重复的个数,每次遍历一个字母,首先判断当前字母所对应的下标的值是否等于1,如果等于1,则说明当前的重复了,则需要保存temp值(需要与结果值比较,保留较大值),并初始化数组。
点赞 回复
分享
发布于 2018-04-08 07:43
动归吧。剑指offer(书)第48题。
点赞 回复
分享
发布于 2018-04-24 21:27
int getmaxstr(string& str) {     int max = 0,curr = 0;     if(str==nullptr) return nullptr; int position = new int [26]; for(int i=0;i<26;i++) position[i] = -1; for(int j=0;j<str.length();j++) { pre = positon[str[j]-'a']; if(pre<0|| i-pre>curr) curr++; else{ if(max<curr){ max = curr; } curr = i - pre; } position[str[j]-'a'] = i; } if(curr>max) max = curr; delete[] position; return max; }//C++的,而且返回的是最长串的的长度,要是返回这个字符串的话,可以回溯一下,有了max,有position,记录下最长那个的结尾就ok了。
点赞 回复
分享
发布于 2018-04-24 21:53

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务