最多包含k個不同字符的最長子串

題目

實現(xiàn)函數(shù):輸入一個字符串str菱属,一個int值k汞幢,輸出str中最多含有k個字符的子串最大長度.例如str="aabc"驼鹅,k="2",則輸出3森篷,因為最長含2個字符的子串是"aab"

解決

  1. 暴力法
    i遍歷字符串输钩,考察以i開頭的子串滿足條件的最大長度,時間復(fù)雜度為O(n^2)
  2. 暴力法
    遍歷str的所有子串(從長到短)仲智,考察其是否滿足條件买乃,時間復(fù)雜度為O(n^2)
  3. HashMap+快慢指針
    利用map記錄子串中每個字符的數(shù)量、利用快慢指針進行遍歷钓辆,分別代表子串的結(jié)尾j與開頭i
    快指針將指向的字符計入map剪验,若此時map.size>k,則移動慢指針(砍掉子串的開頭)岩馍,直至map.size()恢復(fù)正常碉咆,快指針繼續(xù)向前(增加子串的結(jié)尾)。這一過程中j-i+1的最大值即為答案

代碼

public static int find(String str, int k){
        HashMap<Character,Integer> map = new HashMap<>();
        int max = 0;
        for (int j=0,i=0;j<str.length();j++){
            char toPut = str.charAt(j);
            map.put(toPut,map.getOrDefault(toPut, 0)+1);
            while (map.size()>k){
                char temp = str.charAt(i);
                map.put(temp, map.get(temp)-1);//利用map鍵唯一的特點蛀恩,通過put實現(xiàn)值修改
                if (map.get(temp)==0)
                    map.remove(temp);
                i ++;
            }
            max = Math.max(max,j-i+1);
        }
        return max;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疫铜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子双谆,更是在濱河造成了極大的恐慌壳咕,老刑警劉巖席揽,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谓厘,居然都是意外死亡幌羞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門竟稳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來属桦,“玉大人,你說我怎么就攤上這事他爸∧舯觯” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵诊笤,是天一觀的道長系谐。 經(jīng)常有香客問我,道長讨跟,這世上最難降的妖魔是什么纪他? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮晾匠,結(jié)果婚禮上茶袒,老公的妹妹穿的比我還像新娘。我一直安慰自己混聊,他們只是感情好弹谁,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著句喜,像睡著了一般预愤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咳胃,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天植康,我揣著相機與錄音,去河邊找鬼展懈。 笑死销睁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的存崖。 我是一名探鬼主播冻记,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼来惧!你這毒婦竟也來了冗栗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隅居,沒想到半個月后钠至,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡胎源,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年棉钧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涕蚤。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡宪卿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赞季,到底是詐尸還是另有隱情愧捕,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布申钩,位于F島的核電站,受9級特大地震影響瘪阁,放射性物質(zhì)發(fā)生泄漏撒遣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一管跺、第九天 我趴在偏房一處隱蔽的房頂上張望义黎。 院中可真熱鬧,春花似錦豁跑、人聲如沸廉涕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狐蜕。三九已至,卻和暖如春卸夕,著一層夾襖步出監(jiān)牢的瞬間层释,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工快集, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贡羔,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓个初,卻偏偏與公主長得像乖寒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子院溺,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354