日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Longest Substring Without Repeating Characters(最长不重复子序列求解)

發布時間:2025/7/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Longest Substring Without Repeating Characters(最长不重复子序列求解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述:

Given a string, find the length of the?longest substring?without repeating characters.

Examples:

Given?"abcabcbb", the answer is?"abc", which the length is 3.

Given?"bbbbb", the answer is?"b", with the length of 1.

Given?"pwwkew", the answer is?"wke", with the length of 3. Note that the answer must be a?substring,?"pwke"?is a?subsequence?and not a substring.

給出一個字符串,找到它的最長無重復子序列長度。

思路1

從下標0開始,依次查找以當前下標開始的最長不重復子序列。

舉例說明:

C++代碼實現:

int GetMaxLength(string& sTemp, int startIndex) {map<char, int> mapChar;int max = 0;for (int i = startIndex; i < sTemp.length(); ++i){if (mapChar.find(sTemp[i]) != mapChar.end())return max;mapChar[sTemp[i]] = i;++max;}return max; }int lengthOfLongestSubstring(string s) {int max = 0;for (int i = 0; i < s.length(); ++i){int temp = GetMaxLength(s, i);if (temp > max)max = temp;}return max; }

?

思路2

設當前檢測的子序列,下標最小值為m,最大值為n(即子串strInput[m,n]),則當前檢測序列的長度為n-m+1。

如果該序列中沒有重復元素,那么它的長度可以作為最長無重復子序列長度的一個候選值(如果后來有的序列長度超過了它,就替換掉)

我們設當前檢測序列的起始下標為now,遍歷整個字符串,遍歷中當前下標為i;如果可以保證從now到i中沒有重復元素,遍歷一次,就可以利用i-now+1找到最長無重復子序列。

使now從0開始,后移遍歷下標i,直到strInput[now,i]中出現重復的字符,更新now的值,將now移動到重復字符第一次出現的下標后即可。

舉例說明:

可以將字符和下標存入哈希表中,這樣在查找新加入的字符是否在原始檢索串中存在時,時間復雜度為1。

C++代碼實現:

int lengthOfLongestSubstring(string s) {int maxLength = 0;int now = 0;map<char, int> charMap;for (int i = 0; i < s.length(); ++i){if (charMap.find(s[i]) != charMap.end()){now = charMap[s[i]] + 1 > now ? charMap[s[i]] + 1 : now;}if (i - now + 1>maxLength){maxLength = i - now + 1;}charMap[s[i]] = i;}return maxLength; }

思路2優化

由于在C++中字符和數字轉換非常簡單,所以,可以用一個數組來替代哈希表:

C++代碼實現:

int lengthOfLongestSubstring(string s) {int maxLength = 0;int now = 0;int charMap[256];for (int i = 0; i < 256; ++i){charMap[i] = -1;}const char *p = s.c_str();for (int i = 0; i < s.length(); ++i){if (charMap[p[i]] != -1){now = charMap[p[i]] + 1 > now ? charMap[p[i]] + 1 : now;}if (i - now + 1>maxLength){maxLength = i - now + 1;}charMap[p[i]] = i;}return maxLength; }

?

轉載于:https://www.cnblogs.com/zhaogl/p/6364654.html

總結

以上是生活随笔為你收集整理的Longest Substring Without Repeating Characters(最长不重复子序列求解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文日韩 | 苏晴忘穿内裤坐公交车被揉到视频 | 欧美一区二区三区国产 | 色七七桃花影院 | 暖暖日本在线 | 欧美激情在线一区二区 | 涩涩在线观看 | 人人干人人艹 | 久久久久久久久久福利 | jjzz在线| 91成人免费视频 | 亚洲欧美精品在线观看 | 综合激情网 | 超碰caopeng | 福利午夜视频 | 69视频一区二区 | 日韩视频一区二区三区 | 天天人人综合 | 精品国产99久久久久久宅男i | 日韩第1页 | 久久成人黄色 | 欧美日本不卡 | 日韩欧美超碰 | 91一区二区视频 | 欧亚一级片 | 亚洲激情av在线 | 欧美精品一区二区三区在线播放 | 合欢视频污 | 国产又粗又猛又黄又爽视频 | 国语对白少妇spa私密按摩 | 中国黄色小视频 | 69性影院| 欧美日韩高清一区二区 国产亚洲免费看 | 99re热视频 | 精品少妇爆乳无码av无码专区 | 欧美日韩一二三四区 | 日韩综合第一页 | 国产麻豆a毛片 | 久久99精品国产麻豆婷婷洗澡 | 蜜桃91精品入口 | 狠狠老司机 | 婷婷色网| 四虎影 | 欧美日韩中文字幕在线观看 | av收藏小四郎最新地址 | 亚洲国产中文字幕在线 | 中文在线观看免费 | 国产精品偷乱一区二区三区 | 中文字幕人妻熟女在线 | 91成年版 | 一级中国毛片 | 无码人妻精品一区二区蜜桃网站 | 日本女人毛片 | 蜜桃av噜噜一区二区三区小说 | 国产chinese男男网站大全 | 国产精品一区在线看 | 国产精品一区三区 | 国产色视频网站 | 黄色91在线观看 | 樱空桃在线 | 国产一区二区片 | 桃色成人网| 娇小6一8小毛片 | 国产精品视频久久久久 | 国产二级片 | 都市豪门艳霸淫美妇 | 日韩视频一区 | yy111122少妇光屁股影院 | 亚洲色图在线播放 | 老太脱裤让老头玩ⅹxxxx | 男女做爰猛烈吃奶啪啪喷水网站 | 免费视频91 | 日韩免费高清一区二区 | 国产欧美精品一区 | 欧美性视频在线播放 | 男女在楼梯上高潮做啪啪 | 一级做a免费 | 国产熟女一区二区丰满 | 免费一级毛片麻豆精品 | 美女网站视频在线观看 | 亚洲乱码精品久久久久 | www在线播放 | 亚洲伦理一区二区三区 | 日韩一区二区三区不卡视频 | 91日本精品 | 3d动漫精品啪啪一区二区免费 | 五月天男人天堂 | 综合第一页 | 中文字幕无线精品亚洲乱码一区 | 尤物国产 | 天天爽一爽 | 中文字幕在线看高清电影 | 国产乱人伦app精品久久 | 新av在线 | 精品麻豆一区二区 | 日本猛少妇色xxxxx猛叫 | 亚洲影院av | 日本欧美久久久 | 欧美日韩久久久久 |