Leetcode代码练习(二)
2018-06-24 01:37:50来源:未知 阅读 ()
首先,没有第二题,没有第二题的原因是,JavaScript中根本就没有那种数据结构,尽管我在playground里面调试出了正确的结果,但是也许是因为数据结构问题,最终没能让我通过。
所以我就抛弃第二题了。
Given a string, find the length of the longest substring without repeating characters.
给定一个字符串,找出不含有重复字符的 最长子串 的长度。
例如:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
给定 "abcabcbb"
,没有重复字符的最长子串是 "abc"
,那么长度就是3。
Given "bbbbb"
, the answer is "b"
, with the length of 1.
给定 "bbbbb"
,最长的子串就是 "b"
,长度是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.
给定 "pwwkew"
,最长子串是 "wke"
,长度是3。请注意答案必须是一个子串,"pwke"
是 子序列 而不是子串。
题目里面有几个点需要注意,首先就是没有重复字符,一开始我没看到,吃了好大的亏。然后就是找到的这个字符串得是给定字符串的子串。
下面贴出代码,然后分析一下代码:
1 var lengthOfLongestSubstring = function(s) { 2 var i, j; 3 var len = s.length; 4 var compareNumber = 0; 5 for (i = 0; i < len - 1; i++) { 6 for (j = i + 1; j < len; j++) { 7 if (s[i] === s[j]) { 8 compareNumber = s.slice(i, j).length > compareNumber ? s.slice(i, j).length : compareNumber; 9 break; 10 } 11 } 12 } 13 if (compareNumber === 0) { 14 compareNumber = len; 15 } 16 return compareNumber; 17 };
这题不难,关键判断条件是遇到第一个相同的字母,则停下。然后判断新找到子串的长度与之前的最长长度哪一个长,然后令compareNumber等于更长的那个长度。
同时,在取得更长长度之后,退出本轮循环,进行下一轮循环。防止出现字符重复的情况。
最后加了一个if语句,单独判断一次输入字符串为空的情况。
总的来说,只能算是一种行之有效,略微粗暴的方式,并不是本题的最优解。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:vue2.x directive - 限制input只能输入正整数
下一篇:菜单
- js防止表单重复提交实现代码 2020-03-29
- 基于JQuery的多标签实现代码 2020-03-29
- 鼠标悬浮停留三秒后自动显示大图js代码 2020-02-21
- 默认让页面的第一个控件选中的javascript代码 2020-02-20
- 鼠标放在图片上显示大图的JS代码 2020-02-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash