字符串中最长无重复子串(O(n))
生活随笔
收集整理的這篇文章主要介紹了
字符串中最长无重复子串(O(n))
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
#include?<iostream> #include?<string>using?namespace?std; int?main() {string?str;cin?>>?str;const?char*?p?=?str.c_str();?//將字符串轉換為const?char*,以便使用strlen獲取字符串的長度int?length?=?strlen(p);cout?<<?length?<<?endl;int?hash[256];memset(hash,-1,sizeof(hash));int?lastStart?=?0;int?curlen?=?1;int?maxLength?=?0;hash[str[0]]?=?0;for(int?i?=?1;i?<?length;i?++){if(hash[str[i]]?==?-1){curlen++;hash[str[i]]?=?i;}else{if(lastStart?<=?hash[str[i]]){curlen?=?i?-?hash[str[i]];?//修改當前長度,從與當前字符相同的坐標+1開始到當前坐標的長度lastStart?=?hash[str[i]]?+?1;hash[str[i]]?=?i;}else{hash[str[i]]?=?i;?//雖然上一個值在當前起點之前,但是還是要記錄下新的位置,以防后面還有第三個值curlen++;}}//每一以循環過后比較是否超過之前的最大長度if(curlen?>?maxLength){maxLength?=?curlen;}}cout?<<?maxLength?<<?endl;return?0; }轉載于:https://my.oschina.net/handsomedz/blog/659122
總結
以上是生活随笔為你收集整理的字符串中最长无重复子串(O(n))的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OneZero团队Beta发布剧透
- 下一篇: struts2中改变struts.xml