[leetcode]3. Longest Substring Without Repeating Characters(Java)
来源:互联网 发布:lamp兄弟连mysql 编辑:程序博客网 时间:2024/05/26 20:23
https://leetcode.com/problems/longest-substring-without-repeating-characters/#/description
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.
package go.jacob.day705;import java.util.HashMap;import java.util.HashSet;import java.util.Set;/** * [leetcode]3. Longest Substring Without Repeating Characters * * @author Jacob * */public class Demo1 {/* * the basic idea is, keep a hashmap which stores the characters in string as keys * and their positions as values, and keep two pointers which define the max substring. * move the right pointer to scan through the string , and meanwhile update the hashmap. * If the character is already in the hashmap, * then move the left pointer to the right of the same character last found. * Note that the two pointers can only move forward. */public int lengthOfLongestSubstring(String s) {if (s == null || s.length() < 1)return 0;HashMap<Character, Integer> map = new HashMap<Character, Integer>();int max = 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);max=Math.max(max, i+1-j);}return max;}/* * Solution by me Runtime: 51 ms.Your runtime beats 80.99 % of java * submissions. 思路:确定两个指针p1和p2,再new一个HashSet用来存储subString中的字符 * 循环:p2加1,如果HashSet不含有该字符,subString长度加1;如果含有该字符,把p1指向的字符删除,p1+1 */public int lengthOfLongestSubstring_1(String s) {if (s == null || s.length() < 1)return 0;char[] arr = s.toCharArray();Set<Character> set = new HashSet<Character>();set.add(arr[0]);int p1 = 0, p2 = 1;int tempNum = 1, res = 1;while (p2 < s.length()) {while (set.contains(arr[p2])) {set.remove(arr[p1++]);tempNum--;}set.add(arr[p2++]);tempNum++;if (tempNum > res)res = tempNum;}return res;}}
阅读全文
0 0
- [Leetcode] Longest Substring Without Repeating Characters (Java)
- Longest Substring Without Repeating Characters -- Leetcode Java
- [Leetcode]Longest Substring Without Repeating Characters java
- [LeetCode][Java] Longest Substring Without Repeating Characters
- LeetCode java Longest Substring Without Repeating Characters
- LeetCode : Longest Substring Without Repeating Characters [java]
- Java-LeetCode-Longest Substring Without Repeating Characters
- Java Leetcode Longest Substring Without Repeating Characters
- 【LeetCode】 Longest Substring Without Repeating Characters(Java)
- Longest Substring Without Repeating Characters leetcode java
- [LeetCode]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
- [leetcode] 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
- 微服务架构学习总结
- win7 系统下下载 https 网站目录
- BZOJ 1566 DP 解题报告
- 成功,从选择开始
- [VideoCodec] ffmpeg 配置 x265 --- libx265
- [leetcode]3. Longest Substring Without Repeating Characters(Java)
- 山有山的高度
- Web.xml详解
- webpack3学习2--管理资源
- STM32C8T6的漫长之路——为何而来
- 【笔记】WebService开发服务端的两种方式
- 标签使用
- sublime Text3中使用sublimeGit插件
- FindBugs插件的安装与使用