lintcode 中等题:longest substring without repeating characters 最长无重复字符的子串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lintcode 中等题:longest substring without repeating characters 最长无重复字符的子串相关的知识,希望对你有一定的参考价值。
题目
最长无重复字符的子串给定一个字符串,请找出其中无重复字符的最长子字符串。
例如,在"abcabcbb"
中,其无重复字符的最长子字符串是"abc"
,其长度为 3
。
对于,"bbbbb"
,其无重复字符的最长子字符串为"b"
,长度为1
。
解题
利用HashMap,map中不存在就一直加入,存在的时候,找到相同字符的位置,情况map,更改下标
public class Solution { /** * @param s: a string * @return: an integer */ public int lengthOfLongestSubstring(String s) { // write your code here HashMap<Character,Integer> map = new HashMap<Character,Integer>(); if(s == null) return 0; if(s.length() <=1) return s.length(); int longest = -1; for(int i = 0;i<s.length();i++){ char ch = s.charAt(i); if(map.containsKey(ch)){ longest = Math.max(map.size(),longest); i = map.get(ch); map.clear(); }else{ map.put(ch,i); } } longest = Math.max(map.size(),longest); map.clear(); return longest; } }
以上是关于lintcode 中等题:longest substring without repeating characters 最长无重复字符的子串的主要内容,如果未能解决你的问题,请参考以下文章
LintCode Longest Common Subsequence
LintCode Longest Common Substring
lintcode614- Binary Tree Longest Consecutive Sequence II- medium