zoukankan      html  css  js  c++  java
  • LeetCode[3] Longest Substring Without Repeating Characters

    题目描述

    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.

    即给定一个字符串,返回最长的没有重复字符的子串的长度

    思路

    用一个HashMap来存储字符串。其中key为字符,value为该字符在字符串中的位置。

    使用两个指针i,j来指示最长子串的位置。刚开始i,j都为0,指向第一个字符。然后i开始向右遍历。若遍历到的字符已在HashMap中,则更新它的value为现在i的位置。并且将j指向该字符的下一个位置(j只能往右移,或者不移,不能左移)。若未在HashMap中,则将该字符以及它的位置放入HashMap中。最大的(i-j+1)即为最长子串的长度。

    代码如下

    public class Solution {
        public int lengthOfLongestSubstring(String s) {
            if (s.length() == 0) 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-j+1);
            }
            return max;
        }
    }
    
  • 相关阅读:
    java经典算法四十题
    java经典算法四十题
    数据库表的设计总结
    (转)Eclipse 远程调试 WebSphere Application Server (WAS)
    Oracle 与 DB2 数据类型分类对应说明
    使用 XSLT 将 XML 转换为 XHTML
    寓言一则
    操作系统底层工作的整体认识
    Mysq事务
    算法导论概率发生器
  • 原文地址:https://www.cnblogs.com/linbingdong/p/5296229.html
Copyright © 2011-2022 走看看