LeetCode:最長公共前綴

About

因為前幾天出去旅游了,好幾天沒更文了,今天先做一道簡單題起手嘲恍,開始學習。

最長公共前綴

題目描述

編寫一個函數(shù)來查找字符串數(shù)組中的最長公共前綴雄驹。

如果不存在公共前綴佃牛,返回空字符串 ""。

示例 1:

輸入: ["flower","flow","flight"]
輸出: "fl"

示例 2:

輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴医舆。

說明:
所有輸入只包含小寫字母 a-z 俘侠。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/longest-common-prefix

解題思路

一般來說我們一看到這種簡單的題就有思路,但是我們會考慮的問題是如何讓算法的效率更高蔬将,先說一種暴力解法——掃描法:從第一個元素到最后一個元素循環(huán)比較對應位置的字符是否相等爷速,如果不相等就返回上一次循環(huán)的字符串。

代碼

class Solution:
    def longestCommonPrefix(self, strs):
        length = len(strs)
        if length == 0: return ''  # 處理邊界情況 
        counter = 0
        while True:
            try:    # 使用try來處理list out of range的異常
                for i in range(length):
                    if strs[0][counter] != strs[i][counter]:    # 循環(huán)比較每個對應位置的字符
                        return strs[0][0:counter]   # 不相等就返回上一次循環(huán)的列表切片
                counter += 1
            except BaseException:
                return strs[0][0:counter]   # 處理異常

運行結果

掃描法結果

思路二

利用sort()方法會產(chǎn)生比較有意思的作用娃胆,sort()會從頭開始按照字符串的字符在字母表中的位置進行排序遍希,比如:['b','bc','ba','a','c'].sort()結果為['a', 'b', 'ba', 'bc', 'c'],無論列表中的元素是否含有公共前綴里烦,我們只需要比較第一個元素和最后一個元素的對應位置是否相等就可以得出最長公共前綴凿蒜。(我感覺我說不清楚,但能想明白)

代碼

class Solution:
    def longestCommonPrefix(self, strs):
        if len(strs) == 0:    return ''
        if len(strs) == 1:    return strs[0]    # 處理邊界情況
        strs.sort()     # 將列表進行排序胁黑,排序是按照字符在字母表中的位置排序
        comms = ''
        for x,y in zip(strs[0],strs[-1]):   # 使用zip形成對應位置的元組
            if x == y:
                comms += x  # 如果對應位置字符相等就將該字符拼接到公共前綴中
            else:
                break
        return comms

運行結果

思路二結果
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末废封,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子丧蘸,更是在濱河造成了極大的恐慌漂洋,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件力喷,死亡現(xiàn)場離奇詭異刽漂,居然都是意外死亡,警方通過查閱死者的電腦和手機弟孟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門贝咙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拂募,你說我怎么就攤上這事庭猩。” “怎么了陈症?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵蔼水,是天一觀的道長。 經(jīng)常有香客問我录肯,道長趴腋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮优炬,結果婚禮上疏叨,老公的妹妹穿的比我還像新娘。我一直安慰自己穿剖,他們只是感情好,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布卦溢。 她就那樣靜靜地躺著糊余,像睡著了一般。 火紅的嫁衣襯著肌膚如雪单寂。 梳的紋絲不亂的頭發(fā)上贬芥,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機與錄音宣决,去河邊找鬼蘸劈。 笑死,一個胖子當著我的面吹牛尊沸,可吹牛的內容都是我干的威沫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼洼专,長吁一口氣:“原來是場噩夢啊……” “哼棒掠!你這毒婦竟也來了?” 一聲冷哼從身側響起屁商,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤烟很,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜡镶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雾袱,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年官还,在試婚紗的時候發(fā)現(xiàn)自己被綠了芹橡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡妻枕,死狀恐怖僻族,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情屡谐,我是刑警寧澤述么,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站愕掏,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一追逮、第九天 我趴在偏房一處隱蔽的房頂上張望钮孵。 院中可真熱鬧巴席,春花似錦荧库、人聲如沸电爹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瓤摧,卻和暖如春照弥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背给赞。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓征字,卻偏偏與公主長得像匙姜,于是被迫代替她去往敵國和親冯痢。 傳聞我的和親對象是個殘疾皇子氮昧,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內容