Leetcode524.通過刪除字母匹配到字典里最長(zhǎng)單詞

題目描述:

給定一個(gè)字符串和一個(gè)字符串字典,找到字典里面最長(zhǎng)的字符串,該字符串可以通過刪除給定字符串的某些字符來得到。如果答案不止一個(gè),返回長(zhǎng)度最長(zhǎng)且字典順序最小的字符串。如果答案不存在,則返回空字符串。

示例1:

輸入:
s = "abpcplea", d = ["ale","apple","monkey","plea"]
輸出:
"apple"

示例2:

輸入:
s = "abpcplea", d = ["a","b","c"]
輸出:
"a"

說明:

所有輸入的字符串只包含小寫字母。
字典的大小不會(huì)超過 1000。
所有輸入的字符串長(zhǎng)度不會(huì)超過 1000。

解答思路一:按順序進(jìn)行索引,切片,找到匹配的字符串
class Solution(object):
    def findLongestWord(self, s, d):
        """
        :type s: str
        :type d: List[str]
        :rtype: str
        """
        max = float('-inf')
        result = ''
        source = s
        for string in d:
            i = 0
            while i < len(string):
                if string[i] in s:
                    try:
                        s = s[s.index(string[i])+1:]
                    except IndexError:
                        s = ''
                    finally:
                        i += 1
                else:
                    break
            if i == len(string):
                if len(string) > max:
                    max = len(string)
                    result = string
                elif len(string) == max:
                    result = result if result < string else string
                else:
                    pass
            s = source
        return result
解答思路二:排序,然后找到匹配值
class Solution(object):
    def findLongestWord(self, s, d):
        """
        :type s: str
        :type d: List[str]
        :rtype: str
        """
        # 先將d中的單詞按照長(zhǎng)度由長(zhǎng)到短排序,再按照字母順序,從小到大
        d.sort(key=lambda x: (-len(x), x))
        
        # 然后依次比較d中字符串與字典s,如果出現(xiàn)匹配就直接返回
        for word in d:
            i = 0
            for l in s:
                if l == word[i]:
                    i += 1
                if i == len(word):
                    return word
        return ''
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目描述 通過刪除字母匹配到字典里最長(zhǎng)單詞 給定一個(gè)字符串和一個(gè)字符串字典,找到字典里面最長(zhǎng)的字符串,該字符串可以...
    一只可愛的檸檬樹閱讀 402評(píng)論 0 0
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,337評(píng)論 0 10
  • 說明: 本文中出現(xiàn)的所有算法題皆來自牛客網(wǎng)-劍指Offer在線編程題,在此只是作為轉(zhuǎn)載和記錄,用于本人學(xué)習(xí)使用,不...
    秋意思寒閱讀 1,218評(píng)論 1 1
  • 簡(jiǎn)述 極客時(shí)間算法40講中所出現(xiàn)的leetcode算法題 題目 【鏈表】reverse-linked-list(反...
    BestbpF閱讀 4,613評(píng)論 0 4
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,663評(píng)論 1 32

友情鏈接更多精彩內(nèi)容