iT邦幫忙

2021 iThome 鐵人賽

DAY 5
1
自我挑戰組

每日LeetCode解題紀錄系列 第 5

LeetCode解題 Day05

899. Orderly Queue

https://leetcode.com/problems/orderly-queue/


9/6 更新挑戰一行程式碼


題目解釋:

你有一組字串s 和一個數字k

每次只能從字串s 的前k 項裡面選出任一個字母排到s 後面,並且要把s 盡量排成最小字典序的字串(the lexicographically smallest string)

Example:

https://i.imgur.com/2CeB4Os.png


解法:

這題的example1 會讓題目看起來很難,所以我們先來看example2

首先,example2的output是個按照字母順序排序的字串,接著我們把example2的k = 3 改成 k = 2 會發現得到一樣的結果,改成k = 4、k = 5也一樣

因為當k >= 2 時,我們就能把最小順序的字母留在最前面,最後都一定能排出按照順序完美排好的字串,只是差在快慢而已

至於k=1 的狀況,我們只要列出所有的組合並找出最小的順序就好

程式碼:

class Solution:
    def orderlyQueue(self, s: str, k: int) -> str:
        if k > 1:
            return ''.join(sorted(s))
        
        temp = []
        for i in range(len(s)):
            temp.append( s[i:] + s[:i])
        
        return min(temp)

挑戰一行程式碼:

class Solution:
    def orderlyQueue(self, s: str, k: int) -> str:
        return ''.join(sorted(s)) if k > 1 else min([s[i:] + s[:i] for i in range(len(s))])

閒聊:

這題雖然是hard題目,但是相比前兩天同樣是hard的題目簡單很多

可能是因為太簡單的關係,這題倒讚比高了不少

總之順利完成第5天了!!!


話說我可能近視加深需要換眼鏡了,今天第一次看到這個gif竟然看成他在打手槍...
/images/emoticon/emoticon72.gif/images/emoticon/emoticon72.gif/images/emoticon/emoticon72.gif


上一篇
LeetCode解題 Day04
下一篇
LeetCode解題 Day06
系列文
每日LeetCode解題紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言