zoukankan      html  css  js  c++  java
  • 求最长非重复子串

    求最长非重复子串

    求最长非重复子串。

    如:

    “abcabcab” 的最长是 abc 

    "AAAA" 的最长是 A

    要求是:输入最先出现的最长非重复子串。

    string MaxLenSubstr(string s){
    	if(s.length() <= 1){
    		return s; 
    	}
    	int vis[128] = {0}; 
    
    	int ans = 0, ans_p = 0, tmp = 0, tmp_p = 0; 
    
    	for(int i=0; i<s.length(); ++i){
    		if(vis[ s[i] ]==0 || i - vis[ s[i] ] >= tmp ){
    			++tmp; 
    		}else if(i - vis[ s[i] ] < tmp){
    			tmp = i - vis[ s[i] ]; 
    			tmp_p = vis[ s[i] ] + 1; 
    		}
    		vis[ s[i] ] = i; 
    		if(tmp > ans){
    			ans = tmp; 
    			ans_p = tmp_p; 
    		}
    	}
    
    	return s.substr(ans_p, ans); 
    }
    

      

  • 相关阅读:
    函数间的调用关系
    二分法原理
    图片1
    C函数讲解
    图片2
    图片1
    图片2
    函数间的调用关系
    C函数讲解
    二分法原理
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/7645803.html
Copyright © 2011-2022 走看看