翻出了n年前找工時練習寫的**,覺得這個還可以,查詢英文本串中第乙個出現的最長不重複子串。 只需要一次遍歷即可,不過只適用於英文。
char* getmaxsubstr( char*str )
www.2cto.com
int currentstart=0,currentlength = 0,maxstart=0,maxend=0;
int strlen = strlen( str );
for(i=0;i
else
currentstart=hash[str[i]]+1; //更新當前最長的起點
hash[str[i]]=i; //更新字元出現的位置}}
if ( maxend == 0 )//沒有重複字元,返回源串
int maxlength=maxend-maxstart;
char*restr = new char[ maxlength +1 ];
memset( restr,0,maxlength+1);
strncpy( restr,str+maxstart,maxlength );
return restr;
} 摘自:ifeng專欄
最長不重複子串
出處 勇幸 thinking 題 從乙個字串中找到乙個連續子串,該子串中任何兩個字元不能相同,求子串的最大長度並輸出一條最長不重複子串。本節從最直接的方法逐步優化,漸進探索了四種實現方式,並最終找到時間複雜度為o n 輔助空間為常數的方案,內容如下 基本演算法 使用hash dp方案 dp hash...
最長不重複子串
演算法參考 找到乙個字串中的乙個連續子串,這個子串內不能有任何兩個字元是相同的,並且這個子串是符合要求的最長的。例如輸入 abcbef 輸出 cbef o n 的演算法,具體思路如下 以abcbef這個串為例,用乙個陣列pos記錄每個元素曾出現的下標,初始化為 1。從s 0 開始,依次考察每個字元,...
最長不重複子串
題目鏈結 給定乙個字串,找到最長的子串,要求該子串中沒有重複的字元。例如 字串abcabcbb的不含重複字元的 最長 子串為abc,長度為 3。而bbbbbb的不含重複字元的 最長 子串為b,長度為 1。輸入格式 輸入包含多行,每一行對應乙個長度不超過 100 的輸出,直到遇到結束符為止。每行依次輸...