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.
解法一:
遍历字符串,将每个字符放入到哈希表,利用哈希表来判断是否有重复的字符,如果有重复,记录哈希表的大小,并清空哈希表,然后继续从下一个位置开始查找。
(其实算法可以继续优化,即从相同的字符的索引的下一个位置继续查找)
程序如下:
public int lengthOfLongestSubstring(String s) { if(s == null || s.length()==0){ return 0; } Set<Character> charSet = new HashSet<Character>(); char[] ss = s.toCharArray(); charSet.add(ss[0]); int max = 1; for(int i=1;i<ss.length;i++){ for(int j=i;j<ss.length;j++){ if(!charSet.contains(ss[j])){ charSet.add(ss[j]); }else{ max = Math.max(max, charSet.size()); charSet.clear(); charSet.add(ss[i]); break; } } } return max; }
相关推荐
3个最长的子字符串,没有重复的字符.md 33.在旋转排序数组中搜索.md 34在排序数组中找到元素的第一个和最后一个位置.md 35-搜索插入位置.md 36-有效的数独.md 38计数与说.md 39-组合-sum.md 40-组合和-ii.md...
字符串转换整数 (atoi) 中等 Algorithm 9 回文数 简单 Algorithm 10 正则表达式匹配 困难 Algorithm 11 盛水最多的容器 中等 Algorithm 12 整数转罗马数字 中等 Algorithm 13 罗马数字转整数 简单 Algorithm 14 最长...
字符串转换整数(atoi) 中等 C++ 11 盛最多水的容器 中等 C++ 双指针法 :star: 15 三数之和 中等 C++ 17 电话号码的字母组合 中等 C++ 19 删除链表的倒数第N个节点 中等 C++ 20 有效的括号 简单 C++ 21 合并两个有序...
- **最长公共子串(Longest Common Substring)**: 在两个字符串中找到长度最长的相同子串。 - **字符串旋转(Rotate String)**: 将字符串进行旋转操作。 - **反转单词(Reverse Words)**: 将字符串中的单词顺序反转。 -...
- 字符串操作在LeetCode中也占有一席之地,如“最长重复子串”(Longest Repeating Character Replacement)和“字母异位词”(Anagrams)。C++的`std::string`类提供了丰富的字符串操作方法,而`std::unordered_...
例如,"无重复字符的最长子串"(Longest Substring Without Repeating Characters)问题,寻找给定字符串中最长的不包含重复字符的子串。 4. **二叉树(Binary Tree)**:二叉树问题涵盖前序、中序、后序遍历,查找...
2. **字符串**:字符串处理问题也常见,比如检查回文、子串查找、字符串替换等。"无重复字符的最长子串"(Longest Substring Without Repeating Characters)是经典例子。 3. **链表**:链表问题测试了对指针和节点...
3. **字符串**:字符串处理题目包括模式匹配、子串查找、字符串转换等。例如,"有效的括号"(Valid Parentheses)要求检查一个字符串是否是有效的小括号序列。 4. **二叉树**:二叉树题目涉及到遍历、搜索、构造、...
6. **字符串(String)**:涉及到字符串处理,如模式匹配、子串查找、字符串反转等。 7. **堆(Heap)**:用于解决优先队列问题,如求最大/最小元素、调整堆等。 8. **回溯(Backtracking)**和**动态规划...
5. leetCode-5-Longest-Palindromic-Substring.md:第5题,最长回文子串,考察字符串处理和动态规划。 6. leetCode-84-Largest-Rectangle-in-Histogram.md:第84题,柱状图中最大的矩形,涉及到数组处理和栈的数据...
比如,"无重复字符的最长子串"(Longest Substring Without Repeating Characters)要求找出字符串中没有重复字符的最长子串。 3. **链表**:链表问题考察了指针操作和递归能力,如"两链表的交点"(Intersection of...
问题要求在一个字符串中找到最长的不包含重复字符的子串的长度。可以使用滑动窗口的方法来解决,维护一个由当前子串中不同字符组成的集合,用两个指针`i`和`j`分别表示子串的起始和结束位置。向右移动`j`,当遇到...
3. **字符串处理**:字符串在Python中是不可变的,可以进行拼接、查找子串、替换、格式化等操作,常用于处理文本问题。 4. **二叉树**:二叉树数据结构在LeetCode中很常见,包括前序、中序、后序遍历,以及查找、...
的字符串,找出最长的包含有效括号的子串的长度。 2.2 2D-DP 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 2.3 KMP 给定一个 haystack 字符串和一个 needle 字符串, 在 haystack...
7. **字符串处理**:模式匹配、子串查找、反转字符串等。 8. **位运算**:高效地进行某些操作,如判断奇偶性、异或操作等。 9. **图论**:如最短路径算法(Dijkstra、Floyd-Warshall)、拓扑排序等。 10. **设计...
7. **字符串处理**:涉及模式匹配、反转、子串查找等,例如KMP算法和Rabin-Karp算法。 8. **位运算**:高效处理整数,常用于解决空间限制或优化复杂度的问题。 9. **图论**:包括最小生成树(Prim's和Kruskal算法...
- 字符串匹配:"实现strStr()"(Implement strStr())要求高效地查找子串。 - 正则表达式:"有效括号字符串"(Regular Expression Matching)需要掌握复杂的字符串模式匹配。 3. **排序与搜索** - 排序算法:...
3. **字符串处理**:模式匹配、字符串反转、最长子串等。 4. **递归与循环**:在解决复杂问题时经常用到的编程技巧。 5. **复杂度分析**:时间复杂度和空间复杂度,了解算法效率。 在"CodeExercise-master"目录下,...
LeeCode代码库 此存储库介绍了我在LeeCode上传递的所有解决方案,应将其用作研究目的的参考。 用法: 在code.swift文件中编辑代码 > ./generate.sh problem_identifier ...评估字符串的括号对 Swift Java 19
如“无重复字符的最长子串”(Longest Substring Without Repeating Characters)。 4. **栈和队列(Stacks and Queues)**:利用这些数据结构实现功能,如括号匹配、最小值栈等。例如,“有效括号”(Valid ...