字串掃瞄 最長公共字首

2021-10-10 20:23:11 字數 3484 閱讀 1566

編寫乙個函式來查詢字串陣列中的最長公共字首。

如果不存在公共字首,返回空字串 「」。

示例 1:

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

輸出: "fl"

示例 2:

輸入: ["dog","racecar","car"]

輸出: ""

解釋: 輸入不存在公共字首。

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

依次遍歷字串陣列中的每個字串,對於每個遍歷到的字串,更新最長公共字首,當遍歷完所有的字串以後,即可得到字串陣列中的最長公共字首。

說人話就是我們直接乙個乙個的比,先獲取第乙個和第二個的相同字首,然後我們拿這個相同的字首和第三個比最後依次比完,得到最長的公共字首

示例**:

package main

import

"log"

func

longestcommonprefix

(strs [

]string

)string

prefix := strs[0]

count :=

len(strs)

for i :=

1; i < count; i++

}return prefix

}func

lcp(str1, str2 string

)string

return str1[

:index]

}func

min(x, y int

)int

return y

}func

main()

) log.

println

(text)

}

縱向掃瞄時,從前往後遍歷所有字串的每一列,比較相同列上的字元是否相同,如果相同則繼續對下一列進行比較,如果不相同則當前列不再屬於公共字首,當前列之前的部分為最長公共字首。

縱向掃瞄更簡單,就是直接遍歷所有的字串,然後從第一位開始比較,如果發現不同的那麼就直接退出

這個方法看起來不明所以,實際上就是利用了遞迴的思想,比對這麼多很麻煩,我們就把這這個陣列分成兩部分,這裡兩部分繼續細分,直到只剩下兩個字串為止,這樣我們就可以直接比對這兩個字串,返回結果,然後再遞迴回去。。

首先我們看**,先找中值,然後這裡再呼叫自己本身獲取左邊的值和右邊的值,我們這裡先不管遞迴,這裡執行完畢後會只返回左邊的字串和右邊的字串,最後我們只需要找到這兩個字串的公共字首就可以了。

參考**

首先最重要的就是找到最短的那個字串,找到之後我們就可以開始比較了,通過乙個low和height來比較,low為0,height為最短字串長度,我們先取中間值,然後比對所有字串,判斷這個字首是否相等,如果相等那麼low就等於中間值,然後再取low和height的中間值,如果不相等,那麼就說明字首要比中間值小,我們的height就直接設定為中值減一,直到low等於height就說明找到最短字首了

package main

import

"log"

func

longestcommonprefix

(strs [

]string

)string

// 這個函式用於判斷指定長度下所有的字元陣列的字首是否相等

iscommonprefix :=

func

(length int

)bool

}return

true

}// 首先我們假設距離最短的就是列表的第乙個值

minlength :=

len(strs[0]

)// 這裡我們通過遍歷,獲取到最短字串的長度

for_

, s :=

range strs

} low, high :=

0, minlength

// 這裡我們通過low和height來判斷最長的公共字首,當low等於height的時候,就說明已經找到了

for low < high

else

}return strs[0]

[:low]

}func

main()

) log.

println

(text)

}

挑戰字串 最長公共字首

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母 a z 這題用c 比較好做,string 直接 ...

python 字串最長公共字首

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母a z。def longestcommonpref...

字串最長公共字首問題

leetcode練題筆記第二篇 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母 a z 橫向掃瞄...