zoukankan      html  css  js  c++  java
  • Longest Substring Without Repeating Characters

    package cn.edu.xidian.sselab.hashtable;

    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Map;
    import java.util.Set;

    /**
     *
     * @author zhiyong wang
     * title: Longest Substring Without Repeating Characters
     * content:
     *    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
     *
     */
    public class LongestSubString {

        //这种方法,时间超时,如果字符串非常长,时间复杂度为O(n^2),肯定会超时,因为这是一个最优化问题,可以用动态规划来解
        public int lengthOfLongestSubString(String s){
            int length = s.length();
            if(length == 0) return 0;
            int max = 0;
            for(int i=0;i<length;i++){
                Set set = new HashSet();
                for(int j=i;j<length;j++){
                    if(!set.add(s.charAt(j)) && set.size() > max){
                        max = set.size();
                        break;
                    }        
                }
            }
            System.out.println(max);
            return max;
        }
        //参考大牛的思路,用一个map来保存,key表示s中的字符,value表示字符的下标,
        //同时用两个指针,第一个指向字符的下标,第二个指向出现相同的字符的下一个字符
        //时间复杂度为O(n)
        public int lengthOfLongestSubStrings(String s){
            int length = s.length();
            if(length == 0) return 0;
            int max = 0;
            Map<Character,Integer> map = new HashMap();
            for(int i=0,j=0;i<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;    
        }
    }

  • 相关阅读:
    泛型的二阶构造
    二叉树的优势
    浅谈AVL树,红黑树,B树,B+树原理及应用
    AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中?
    据库索引及其数据结构
    关系型数据库工作原理-数据结构(3)
    数据库的最简单实现
    为什么使用数据库?数据库的存取效率如何保证?
    iOS原生数据存储策略
    数据存储要解决的几个问题
  • 原文地址:https://www.cnblogs.com/wzyxidian/p/5167748.html
Copyright © 2011-2022 走看看