【Leetcode】30. Substring with Concatenation of All Words


對(duì)于這道題凌箕,理解題意很重要袜蚕,要考慮到words中出現(xiàn)重復(fù)單詞的情況遭顶。并且,要求找出所有的可能的index(包括重疊可能),舉個(gè)例子汪诉,如果s='abcdefcd'words=['cd', 'ef'],那么應(yīng)返回[2, 4]睬辐。
用了好幾種方案,都不能解決問題宾肺。最后的解題思路是:假設(shè)word長度為length溯饵,個(gè)數(shù)是n,從索引x=0開始锨用,如果s[x:x+length]是words中一員丰刊,那么從x開始從s中截取所有words拼接長度的字符串ss=s[x:x+length*n],在函數(shù)isValid中判斷該子串是否是所有words的拼接增拥,如果是則記錄索引啄巧。在isValid中的判斷思路是,根據(jù)word長度掌栅,將ss劃分成list列表words_ss秩仆,然后遍歷words,每遍歷一個(gè)word猾封,判斷words_ss中有無此word澄耍,若無,直接返回False晌缘;若有齐莲,則從word_ss中刪除該word。遍歷結(jié)束磷箕,返回True选酗。

class Solution(object):
    def findSubstring(self, s, words):
        """
        :type s: str
        :type words: List[str]
        :rtype: List[int]
        """
        if len(words) == 0:
            return []
        length = len(words[0])
        if length > len(s):
            return []
        count_c = len(words) * length
        res = []
        i = 0
        while i < len(s) - count_c + 1:
            word = s[i:i + length]
            if word in words:
                ss = s[i:i + count_c]
                if self.isValid(ss, words, length):
                    res.append(i)
                i += 1
            else:
                i += 1
        return res

    def isValid(self, ss, words, length):
        words_ss = []
        for x in xrange(len(ss) / length):
            word = ss[x * length:(x + 1) * length]
            words_ss.append(word)
        for word in words:
            if word in words_ss:
                words_ss.remove(word)
            else:
                return False
        return True
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市岳枷,隨后出現(xiàn)的幾起案子芒填,更是在濱河造成了極大的恐慌呜叫,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件殿衰,死亡現(xiàn)場(chǎng)離奇詭異怀偷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)播玖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門椎工,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜀踏,你說我怎么就攤上這事维蒙。” “怎么了果覆?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵颅痊,是天一觀的道長。 經(jīng)常有香客問我局待,道長斑响,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任钳榨,我火速辦了婚禮舰罚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘薛耻。我一直安慰自己营罢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布饼齿。 她就那樣靜靜地躺著饲漾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缕溉。 梳的紋絲不亂的頭發(fā)上考传,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音证鸥,去河邊找鬼僚楞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛敌土,可吹牛的內(nèi)容都是我干的镜硕。 我是一名探鬼主播运翼,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼返干,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了血淌?” 一聲冷哼從身側(cè)響起矩欠,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤财剖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后癌淮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躺坟,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年乳蓄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咪橙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虚倒,死狀恐怖美侦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情魂奥,我是刑警寧澤菠剩,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站耻煤,受9級(jí)特大地震影響具壮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哈蝇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一棺妓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炮赦,春花似錦涧郊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至看幼,卻和暖如春批旺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诵姜。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工汽煮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棚唆。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓暇赤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宵凌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鞋囊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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