LeetCode 014 Longest Common Prefix

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string "".

Example 1:

Input: ["flower","flow","flight"]
Output: "fl"

Example 2:

Input: ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.

Note:
All given inputs are in lowercase letters a-z.

簡(jiǎn)單的說就是求最長(zhǎng)公共前綴,解法的思路如圖,

image-20180708134936170

就是每?jī)蓚€(gè)字符串進(jìn)行對(duì)比,尋找最大的前綴,然后找到的前綴與下一個(gè)字符串進(jìn)行前綴匹配,當(dāng)然也可以先把字符串根據(jù)長(zhǎng)度排序,用最短的那個(gè)字符串作為最開始的前綴來進(jìn)行匹配查找,因?yàn)樽铋L(zhǎng)公共前綴的長(zhǎng)度不會(huì)超過最短的字符串長(zhǎng)度~

Solution

package main

import (
    "fmt"
    "strings"
)

func longestCommonPrefix(strs []string) string {
    // 如果數(shù)組是空的,那么返回 ""
    if(len(strs) == 0) {
        return ""
    }
    // 取第一個(gè)字符串作為初始的前綴
    prefix := strs[0]
    for i := 1; i < len(strs); i++{
        // 這個(gè)循環(huán)的目的是,根據(jù)查找前綴的位置來判斷是否已經(jīng)找到公共前綴
        for ; strings.Index(strs[i], prefix) != 0; {
            // 沒找到,則去掉最后一位,繼續(xù)嘗試
            prefix = prefix[0:len(prefix) - 1]
            // 如果沒有公共前綴,就返回 ""
            if(len(prefix) == 0) {
                return ""
            }
        }
    }
    return prefix
}

func main() {
    a := []string{"flower", "flow", "flight"}
    fmt.Println(longestCommonPrefix(a))
    a = []string{"aa", "a"}
    fmt.Println(longestCommonPrefix(a))
}
?著作權(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)容

  • [TOC] P014 Longest Common Prefix Write a function to find...
    hylexus閱讀 361評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評(píng)論 19 139
  • 前言 最先接觸編程的知識(shí)是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識(shí),c語言,java語言,單片機(jī)的匯編語言等;大學(xué)畢...
    oceanfive閱讀 3,403評(píng)論 0 7
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,264評(píng)論 0 38
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,732評(píng)論 0 5

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