求字符串中不重复的最长子串的长度
来源:互联网 发布:linux搭建java环境 编辑:程序博客网 时间:2024/06/06 00:08
https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
描述:输入"abcabcbb"
, 输出 3(abc).输入 "bbbbb"
,输出1(b).输入 "pwwkew"
,输出3(wke)
1.使用hashmap解决:
public static int lengthOfLongestSubstring(String s) { if(s.length()==0) return 0; HashMap<Character,Integer> map = new HashMap<Character,Integer>(); int max = 0; for(int right=0,left=0;right<s.length();right++){ if(map.containsKey(s.charAt(right))){ left = Math.max(left,map.get(s.charAt(right))+1); } map.put(s.charAt(right),right); max = Math.max(max,right-left+1); } return max; }
2.借用ASCII码表解决问题:
private static int lengthOfLongestSubstring_DP(String s) {int[] charIndex = new int[256];for (int i = 0; i < charIndex.length; i++) {charIndex[i] = -1;}int longest = 0,left = 0;for (int right = 0; right < s.length(); right++) {left = Math.max(charIndex[s.charAt(right)]+1,left);charIndex[s.charAt(right)] = right;longest = Math.max(longest,right-left+1);}return longest;}上述两种方法的辅助的数据类型不同,但是解题思路是一致的,即通过寻找左右指针来确定最长不重复数组的长度。指针right一次往后遍历字符串,指针left但出现重复字符串时候往前移动到新的无重复字符的位置。
阅读全文
1 0
- 求字符串中不包含重复字符的最长子串的长度
- 求字符串中不重复的最长子串的长度
- 求字符串中不重复字符的最长子串
- 求字符串的不重复字符的最长子串长度的问题
- 求字符串的不重复字符的最长子串长度的问题
- 求一个字符串的最长不重复子串的最大长度
- 字符串最长不含重复字符的子串长度
- 找出字符串的最长不重复子串,输出长度
- 找出字符串的最长不重复子串,输出长度
- 找出字符串的最长不重复子串,输出长度
- 求 最长不重复子串的长度 & 最长回文的长度
- 求最长重复子串的长度
- leetcode第三题:求给定字符串中最长无重复子串的长度
- 求字符串的最长不重复子串
- LeetCode OJ 3.求字符串中最长不重复子串长度问题
- 查找字符串中无重复最长子串的长度
- 求字符串中最长连续数字子串的长度
- 求字符串中最长连续数字子串的长度
- 客户端跳转与服务器端跳转的区别
- 对单选框多选框下拉框的绑定及选取操作
- 849852_十里桃花主管:网站目录收录的好处
- 弹性动画
- 双链表--简单操作
- 求字符串中不重复的最长子串的长度
- jquery实现table动态添加行、删除行以及行的上移和下移
- 测试文章发送
- 请求方式+imageloaderl
- 设备分配
- Linux软RAID实现
- 自己修改, jquery实现table动态添加行、删除行以及行的上移和下移
- java爬虫爬取美女图片
- Qt中常用到的快捷键