3. Longest Substring Without Repeating Characters
来源:互联网 发布:无法连接到网络1-10087 编辑:程序博客网 时间:2024/06/06 11:46
题目:
Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 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.
给定一个字符串,找到不包含重复元素的最长子串,返回最长子串的长度值;
思路:
输入的字符串都是字母,则新建一个数组,利用字母的ASCII码作为下标,将该字母出现的位置存储在数组中,下一次出现该字符时,下标作差即可求出重复元素之间的长度。
代码:C++版16ms
class Solution {public: int lengthOfLongestSubstring(string s) { vector<int> charIndex(256, -1); int longest = 0, lastlen = 0; for(int i=0; i<s.size(); i++){ lastlen = max(charIndex[s[i]]+1, lastlen); //上一次出现当前元素的下标 charIndex[s[i]] = i; //将当前元素出现的位置保存到数组中 longest = max(longest, i-lastlen+1); } return longest; }};java版:20ms
public class Solution { public int lengthOfLongestSubstring(String s) { if(s.length()==0) return 0; HashMap<Character, Integer> map = new HashMap<Character, Integer>(); int longest = 0; for(int i=0, j=0; i<s.length(); i++){ if(map.containsKey(s.charAt(i))){ j = Math.max(j, map.get(s.charAt(i))+1); } map.put(s.charAt(i), i); longest = Math.max(longest, i-j+1); } return longest; }}思路二:
使用set来保存不相同的最长子串,有不同的元素,则加入set集合中,否则移除set中的一个元素。
代码:java版:26ms
public class Solution { public int lengthOfLongestSubstring(String s) { int i=0, j=0, longest = 0; Set<Character> set = new HashSet<>(); while(j<s.length()){ if(!set.contains(s.charAt(j))){ set.add(s.charAt(j++)); longest = Math.max(longest, set.size()); }else{ set.remove(s.charAt(i++)); } } return longest; }}
0 0
- [LeetCode]3.Longest Substring Without Repeating Characters
- LeetCode 3.Longest Substring Without Repeating Characters
- LeetCode --- 3. Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- [Leetcode] 3. Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- 3. Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- 3. Longest Substring Without Repeating Characters
- [leetcode] 3.Longest Substring Without Repeating Characters
- 3.Longest Substring Without Repeating Characters
- [leetcode] 3. Longest Substring Without Repeating Characters
- 3. Longest Substring Without Repeating Characters
- [Leetcode]3. Longest Substring Without Repeating Characters
- leetcode 3. Longest Substring Without Repeating Characters
- 【Leetcode】3. Longest Substring Without Repeating Characters
- ORA-16003: standby database is restricted to read-only access
- 总结一下这两天所学RecyclerView
- Android群英转读书笔记第七章(Android动画机制与使用技巧)
- 定位加上拉加载下拉刷新
- 在Linux上配置unixODBC和FreeTDS访问MS SQL Server
- 3. Longest Substring Without Repeating Characters
- 正则表达之零宽断言(零宽度正预测先行断言)
- 定位操作
- js中=和==以及加不加"的随笔
- Nginx安装及使用
- HttpURLConnection请求数据及Gson解析
- 双亲委派机制
- Java API
- 如何让touchmove之后不触发touchend的事件