LeetCode—3.Longest Substring Without Repeating Characters

Type:medium

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

Example 1:

Input: "abcabcbb"Output: 3Explanation:The answer is"abc", with the length of 3.

Example 2:

Input: "bbbbb"Output: 1Explanation: The answer is"b", with the length of 1.

Example 3:

Input: "pwwkew"Output: 3Explanation: The answer is"wke", with the length of 3.? ? ? ? ? ? ? Note that the answer must be asubstring,"pwke"is asubsequenceand not a substring.


本題旨在尋找字符串中最長無重復字符子串怎憋。

本題基本解題思路為建立兩個指針i舅列、j削锰,指針i指向無重復的子字符串的第一位葛作,指針j指向最后一位揖铜。在遍歷s的過程中张惹,指針j向前遍歷旺坠,若遇到重復的字符則指針i指向這個重復的字符堂淡,指針j繼續(xù)向后遍歷教馆,直至讀取完整個s字符串逊谋。j、i間的距離就為最長無重復子字符串土铺。

有一個很巧妙的想法胶滋,從ASCII角度考慮板鬓,每一個字符(32-126)都可以轉(zhuǎn)為int型。因此建立一個名叫count的vector<int>型究恤,大小可以為126俭令。建立int型start記錄首字符的位置,賦為初始值-1部宿,maxlen記錄該子字符串長度抄腔,賦為初始值0。首先把所有count值都賦值為-1理张,然后讀取string字符串赫蛇,由于初始化下count[s[i]]均為-1,因此可用來判斷是否之前有重復字符串雾叭。因此在讀取s過程中悟耘,首先判斷count[s[i]]的值是否為-1,若是-1织狐,說明s中該第i位還未重復暂幼,并將count[s[i]]設為i值,即它在s中的位置移迫;若count[s[i]]不為-1旺嬉,說明在這之前已經(jīng)讀取過s[i],則賦start = count[s[i]]厨埋,即為上一次重復的字符位置邪媳。此時,i - start即為該子字符串的長度揽咕。比較maxlen與該值的大小悲酷,取最大值為新的maxlen。

當i讀取到最后一位亲善,返回maxlen设易,即為所求結(jié)果。


附代碼:
class Solution {

public:

? ? int lengthOfLongestSubstring(string s) {

? ? ? ? int n = s.length();

? ? ? ? int i;

? ? ? ? vector<int> count(128, -1) ;

? ? ? ? int start = -1;

? ? ? ? int maxlen = 0;

? ? ? ? for(i=0; i<n; i++){

? ? ? ? ? ? if(count[s[i]] > start) start = count[s[i]];

? ? ? ? ? ? count[s[i]] = i;

? ? ? ? ? ? maxlen = max(i-start, maxlen);

? ? ? ? }

? ? ? ? return maxlen;

? ? }

};

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛹头,一起剝皮案震驚了整個濱河市顿肺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渣蜗,老刑警劉巖屠尊,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耕拷,居然都是意外死亡讼昆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門骚烧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浸赫,“玉大人闰围,你說我怎么就攤上這事〖认浚” “怎么了羡榴?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長运敢。 經(jīng)常有香客問我校仑,道長,這世上最難降的妖魔是什么传惠? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任迄沫,我火速辦了婚禮,結(jié)果婚禮上涉枫,老公的妹妹穿的比我還像新娘邢滑。我一直安慰自己腐螟,他們只是感情好愿汰,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乐纸,像睡著了一般衬廷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汽绢,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天吗跋,我揣著相機與錄音,去河邊找鬼宁昭。 笑死跌宛,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的积仗。 我是一名探鬼主播疆拘,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寂曹!你這毒婦竟也來了哎迄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤隆圆,失蹤者是張志新(化名)和其女友劉穎漱挚,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渺氧,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡旨涝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了侣背。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片白华。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡哩治,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衬鱼,到底是詐尸還是另有隱情业筏,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布鸟赫,位于F島的核電站蒜胖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抛蚤。R本人自食惡果不足惜台谢,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岁经。 院中可真熱鬧朋沮,春花似錦、人聲如沸缀壤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塘慕。三九已至筋夏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間图呢,已是汗流浹背条篷。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蛤织,地道東北人赴叹。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像指蚜,于是被迫代替她去往敵國和親乞巧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容