力扣雙周賽49(2021-04-03)解題分享

5722. 截斷句子

https://leetcode-cn.com/problems/truncate-sentence/

難度:簡單

題目:

句子 是一個單詞列表,列表中的單詞之間用單個空格隔開用踩,且不存在前導(dǎo)或尾隨空格。每個單詞僅由大小寫英文字母組成(不含標(biāo)點符號)叨粘。

例如遣总,"Hello World"、"HELLO" 和 "hello world hello world" 都是句子。
給你一個句子 s 和一個整數(shù) k 揽惹,請你將 s 截斷 ,使截斷后的句子僅含 前 k個單詞四康。返回 截斷 s 后得到的句子搪搏。

示例:

示例 1:

輸入:s = "Hello how are you Contestant", k = 4

輸出:"Hello how are you"

解釋:
s 中的單詞為 ["Hello", "how" "are", "you", "Contestant"]
前 4 個單詞為 ["Hello", "how", "are", "you"]
因此,應(yīng)當(dāng)返回 "Hello how are you"

示例 2:

輸入:s = "What is the solution to this problem", k = 4

輸出:"What is the solution"

解釋:
s 中的單詞為 ["What", "is" "the", "solution", "to", "this", "problem"]
前 4 個單詞為 ["What", "is", "the", "solution"]
因此闪金,應(yīng)當(dāng)返回 "What is the solution"

示例 3:

輸入:s = "chopper is not a tanuki", k = 5

輸出:"chopper is not a tanuki"

分析

這種字符串截斷的問題疯溺,就是python的最愛!

解題:

class Solution:
    def truncateSentence(self, s, k):
        list_s = s.split()
        return ' '.join(list_s[:min(k, len(list_s))])

5723. 查找用戶活躍分鐘數(shù)

https://leetcode-cn.com/problems/finding-the-users-active-minutes/

難度:中等

題目:

給你用戶在 LeetCode 的操作日志哎垦,和一個整數(shù) k 囱嫩。日志用一個二維整數(shù)數(shù)組 logs 表示,其中每個 logs[i] = [IDi, timei] 表示 ID 為 IDi 的用戶在 timei 分鐘時執(zhí)行了某個操作漏设。

多個用戶 可以同時執(zhí)行操作墨闲,單個用戶可以在同一分鐘內(nèi)執(zhí)行 多個操作 。

指定用戶的 用戶活躍分鐘數(shù)(user active minutes郑口,UAM) 定義為用戶對 LeetCode 執(zhí)行操作的 唯一分鐘數(shù) 鸳碧。 即使一分鐘內(nèi)執(zhí)行多個操作,也只能按一分鐘計數(shù)犬性。

請你統(tǒng)計用戶活躍分鐘數(shù)的分布情況瞻离,統(tǒng)計結(jié)果是一個長度為 k 且 下標(biāo)從 1 開始計數(shù) 的數(shù)組 answer ,對于每個 j(1 <= j <= k)乒裆,answer[j] 表示 用戶活躍分鐘數(shù) 等于 j 的用戶數(shù)套利。

返回上面描述的答案數(shù)組 answer 。

示例:

示例 1:

輸入:logs = [[0,5],[1,2],[0,2],[0,5],[1,3]], k = 5

輸出:[0,2,0,0,0]

解釋:
ID=0 的用戶執(zhí)行操作的分鐘分別是:5 、2 和 5 日裙。因此吹艇,該用戶的用戶活躍分鐘數(shù)為 2(分鐘 5 只計數(shù)一次)
ID=1 的用戶執(zhí)行操作的分鐘分別是:2 和 3 。因此昂拂,該用戶的用戶活躍分鐘數(shù)為 2
2 個用戶的用戶活躍分鐘數(shù)都是 2 受神,answer[2] 為 2 ,其余 answer[j] 的值都是 0

示例 2:

輸入:logs = [[1,1],[2,2],[2,3]], k = 4

輸出:[1,1,0,0]

解釋:
ID=1 的用戶僅在分鐘 1 執(zhí)行單個操作格侯。因此鼻听,該用戶的用戶活躍分鐘數(shù)為 1
ID=2 的用戶執(zhí)行操作的分鐘分別是:2 和 3 。因此联四,該用戶的用戶活躍分鐘數(shù)為 2
1 個用戶的用戶活躍分鐘數(shù)是 1 撑碴,1 個用戶的用戶活躍分鐘數(shù)是 2
因此,answer[1] = 1 朝墩,answer[2] = 1 醉拓,其余的值都是 0

分析

題目解釋稍微有點繞,但仔細(xì)看會比較好理解收苏。

  1. 首先創(chuàng)建一個長度為K的全零列表ret.
  2. 維護(hù)一個哈希表亿卤,其中每個value值使用集合的數(shù)據(jù)類型。
  3. 遍歷logs鹿霸,查找到所有以用戶id為key排吴,且該用戶活躍在不重復(fù)的分鐘數(shù)內(nèi)的set集合
  4. 循環(huán)檢索哈希表的values值,將每個values值得長度+1作為ret的index執(zhí)行+=1的操作即可
  5. 這里注意由于分鐘數(shù)是以1位開頭的懦鼠,所有l(wèi)en(values)需要-1

解題:

class Solution:
    def findingUsersActiveMinutes(self, logs, k):
        ret = [0 for _ in range(k)]
        d = {}
        for i in logs:
            id, time = i
            if id not in d:
                d[id] = {time, }
            else:
                d[id].add(time)
        for j in d.values():
            count = len(j)
            if count <= k:
                ret[count - 1] += 1
        return ret

5706. 句子相似性 III

https://leetcode-cn.com/problems/sentence-similarity-iii/

難度:中等

題目:

一個句子是由一些單詞與它們之間的單個空格組成钻哩,且句子的開頭和結(jié)尾沒有多余空格。比方說肛冶,"Hello World"街氢,"HELLO",
"hello world hello world"都是句子淑趾。每個單詞都 只包含大寫和小寫英文字母阳仔。

如果兩個句子sentence1 和sentence2,可以通過往其中一個句子插入一個任意的句子(可以是空句子)而得到另一個句子扣泊,
那么我們稱這兩個句子是 相似的近范。比方說,sentence1 = "Hello my name is Jane" 且sentence2 = "Hello Jane"延蟹,
我們可以往 sentence2中"Hello" 和"Jane"之間插入"my name is"得到 sentence1评矩。

給你兩個句子sentence1 和sentence2,如果sentence1 和sentence2 是相似的阱飘,請你返回true斥杜,否則返回false虱颗。

示例:

示例 1:

輸入:sentence1 = "My name is Haley", sentence2 = "My Haley"

輸出:true

解釋:可以往 sentence2 中 "My" 和 "Haley" 之間插入 "name is" ,得到 sentence1 蔗喂。

示例 2:

輸入:sentence1 = "of", sentence2 = "A lot of words"

輸出:false

解釋:沒法往這兩個句子中的一個句子只插入一個句子就得到另一個句子忘渔。

示例 3:

輸入:sentence1 = "Eating right now", sentence2 = "Eating"

輸出:true

解釋:可以往 sentence2 的結(jié)尾插入 "right now" 得到 sentence1 。

示例 4:

輸入:sentence1 = "Luky", sentence2 = "Lucccky"

輸出:false

分析

比賽的時候雖然通過了缰儿,但寫了一堆if else的邏輯沒有好好考慮場景畦粮。

晚上又畫圖仔細(xì)分析了下,感覺當(dāng)時想太多了乖阵,就只有三種情況而已...

  1. 左匹配 左指針移動的總和 等于 被比較的數(shù)字
  2. 右匹配 右指針移動的總和 等于 被比較的數(shù)字
  3. 兩端匹配 兩端指針移動的總和 等于 被比較的數(shù)字

解題:

class Solution:
    def areSentencesSimilar(self, sentence1, sentence2):
        # 判斷base與compare,base為總長句子宣赔,compare為待插入的句子
        base, comp = sentence1.split(), sentence2.split()
        if len(base) < len(comp):
            base, comp = comp, base
        # 先判斷做匹配
        i = 0
        while i < len(comp) and base[i] == comp[i]:
            i += 1
        if i == len(comp):
            return True
        # 再判斷右匹配
        j = 0
        while j >= 0 and base[len(base) - j - 1] == comp[len(comp) - j - 1]:
            j += 1
        # 同時判斷兩端匹配
        if j == len(comp) or i + j == len(comp):
            return True
        # 其他場景都是錯誤的
        return False

歡迎關(guān)注我的公眾號: 清風(fēng)Python,帶你每日學(xué)習(xí)Python算法刷題的同時瞪浸,了解更多python小知識儒将。

有喜歡力扣刷題的小伙伴可以加我微信(King_Uranus)互相鼓勵,共同進(jìn)步对蒲,一起玩轉(zhuǎn)超級碼力钩蚊!

我的個人博客:https://qingfengpython.cn

力扣解題合集:https://github.com/BreezePython/AlgorithmMarkdown

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蹈矮,隨后出現(xiàn)的幾起案子两疚,更是在濱河造成了極大的恐慌,老刑警劉巖含滴,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丐巫,居然都是意外死亡谈况,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門递胧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碑韵,“玉大人,你說我怎么就攤上這事缎脾∽N牛” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵遗菠,是天一觀的道長联喘。 經(jīng)常有香客問我,道長辙纬,這世上最難降的妖魔是什么豁遭? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮贺拣,結(jié)果婚禮上蓖谢,老公的妹妹穿的比我還像新娘捂蕴。我一直安慰自己,他們只是感情好闪幽,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布啥辨。 她就那樣靜靜地躺著,像睡著了一般盯腌。 火紅的嫁衣襯著肌膚如雪溉知。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天腊嗡,我揣著相機(jī)與錄音着倾,去河邊找鬼。 笑死燕少,一個胖子當(dāng)著我的面吹牛卡者,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播客们,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼崇决,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了底挫?” 一聲冷哼從身側(cè)響起恒傻,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎建邓,沒想到半個月后盈厘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡官边,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年沸手,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片注簿。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡契吉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诡渴,到底是詐尸還是另有隱情捐晶,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布妄辩,位于F島的核電站惑灵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏眼耀。R本人自食惡果不足惜泣棋,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望畔塔。 院中可真熱鬧潭辈,春花似錦鸯屿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至修赞,卻和暖如春婶恼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柏副。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工勾邦, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人割择。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓眷篇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親荔泳。 傳聞我的和親對象是個殘疾皇子蕉饼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

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