Leetcode代码练习

Posted menmenbule

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode代码练习相关的知识,希望对你有一定的参考价值。

首先,没有第二题,没有第二题的原因是,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语句,单独判断一次输入字符串为空的情况。

总的来说,只能算是一种行之有效,略微粗暴的方式,并不是本题的最优解。

以上是关于Leetcode代码练习的主要内容,如果未能解决你的问题,请参考以下文章

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

LeetCode 260 只出现一次的数字(超详细)

leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段

算法零基础学习关于二维数组的一些基础练习题 | leetcode1672158283248题解

算法零基础学习关于二维数组的一些基础练习题 | leetcode1672158283248题解