LeetCode03 最长无重复子串
题目
给定一个字符串,找出不含有重复字符的最长子串的长度。
解答
刚开始以为只是一遍遍历后来的字符和前面一样便开始算新子串,给的案例都过了,但是卡在了“dvdf”
后来经过重重试验,暴力循环,不断调整变量作用域,在经过
“ohvhjdml”
“bbbbb”
“abcabcbb”
“pwwkew”
“ppkw”
“ak”
这几个字符串的测试下,暴力法终于通过了,但是用时较长
后来又尝试了哈希表缩边界的方法,相对简洁快速
var lengthOfLongestSubstring = function(s) {
var hash= new hashTable();
let maxl=0;
for(let i=0,j=0; j<s.length;j++)
{
hash.containsKey(s[j])&& ( i = Math.max(hash.getValue(s[j]),i)); //重复子串,缩小左边界
maxl = Math.max(maxl,j-i+1);
hash.add(s[j],j+1);
}
return maxl;
};
心得:
- 在网上查资料的时候发现比较优雅的条件判断,把没有else的if判断改成与或非判断的表达式,简洁优雅还省时间;
- 中间卡的时间比较长的就是“dvdf”和“aab”,在用暴力法解答的时候前者我没有考虑“vdf"的情况,字符串被分隔成了“dv”,“df”,后来又加在字符是字符串唯一的时候的条件判断,后者是判断条件不全字符串被分割成了“a”,“a”,“b”,加了第二个字母等于第一个字母时候的特殊条件判断,暴力法就稳了
- 换哈希表的时候参考官方的优化边界方法,后来发现不太理解的地方是最后的j+1,试过把j+1和上面的j-i+1的+1删掉。别的测试都没事,但是无重复的子串会少算一个。目前理解是多少个树和中间的坑的问题
LeetCode03 最长无重复子串的更多相关文章
- [LeetCode] Longest Substring Without Repeating Characters 最长无重复子串
Given a string, find the length of the longest substring without repeating characters. For example, ...
- 最长无重复子串问题 leetcode 3
一.代码及注释 class Solution { public: int lengthOfLongestSubstring(string s) { int n = s.size(); //字符串的长度 ...
- [LeetCode] 3.Longest Substring Without Repeating Characters 最长无重复子串
Given a string, find the length of the longest substring without repeating characters. Example 1: In ...
- [LeetCode] Longest Substring Without Repeating Characters最长无重复子串
Given a string, find the length of the longest substring without repeating characters. For example, ...
- 【LeetCode】3.Longest Substring Without Repeating Characters 最长无重复子串
题目: Given a string, find the length of the longest substring without repeating characters. Examples: ...
- leetcode 3 Longest Substring Without Repeating Characters最长无重复子串
Given a string, find the length of the longest substring without repeating characters. For example, ...
- [LeetCode] Longest Substring Without Repeating Characters 最长无重复字符的子串
Given a string, find the length of the longest substring without repeating characters. Example 1: In ...
- [LeetCode] Longest Substring Without Repeating Characters 最长无重复字符的子串 C++实现java实现
最长无重复字符的子串 Given a string, find the length of the longest substring without repeating characters. Ex ...
- lintcode: 最长无重复字符的子串
题目 最长无重复字符的子串给定一个字符串,请找出其中无重复字符的最长子字符串. 例如,在"abcabcbb"中,其无重复字符的最长子字符串是"abc",其长度为 ...
随机推荐
- python 循环结构 while for...in
# ### 循环结构 while for...in """ 循环结构的特点:减少代码的冗余,提高代码的效率 语法形式: """ # 打印1~ ...
- 【actitivi】配置运行上遇到的问题
基础: 需要 问题1:对于activiti-admin,添加mysql-connector-java-5.1.47.jar后: Sun Apr 28 16:09:00 CST 2019 WARN: E ...
- 【LeetCode每天一题】Set Matrix Zeroes(设置0矩阵)
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in-place. Exampl ...
- go基本语法
1. 用var来定义变量, 类型被纺织在变量名的后面. var i int 并且运行时默认初始化为二进制0 var i , y int var x string, y int2. 显示初始化值的时候, ...
- 用php实现斐波那契数列,如: 1, 1, 2, 3, 5, 8, 13, 21, 34。用数组求出第20个数的值。
<?php //用数组 function fib($n){ $array = array(); $array[0] = 1; $array[1] = 1; for($i=2;$i<$n;$ ...
- Sublime 个人配置
Sublime 个人配置 用的faltland主题,之后还加了一些自己喜欢的东西. 效果图如下: { "always_show_minimap_viewport": true, & ...
- Ubuntu 16.04 安装 Apache, MySQL, PHP7.2
先更新系统 sudo apt update 安装PHP 通过修改PPA源的方式来安装 sudo apt-get install software-properties-common python-so ...
- CLR 无法从 COM 上下文 0x208f68 转换为 COM 上下文 0x2090d8,这种状态已持续 60 秒
问题: CLR 无法从 COM 上下文 0x208f68 转换为 COM 上下文 0x2090d8,这种状态已持续 60 秒.拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Wind ...
- git clone git@github.com:snuglove/ 报错
[root@qc_centos7_5 ~]# git clone git@github.com:snuglove/Job-hunting-related.git Cloning into 'Job-h ...
- 转--Python re模块 验证11位手机号
一.常用正则表达式符号和语法: '.' 匹配所有字符串,除\n以外 ‘-’ 表示范围[0-9] '*' 匹配前面的子表达式零次或多次.要匹配 * 字符,请使用 \*. '+' 匹配前面的子表达 ...