1. 程式人生 > >LeetCode-- Longest Common Prefix

LeetCode-- Longest Common Prefix

問題

這個題,leetcode給的資訊很少。題目本身是要求一組字串的相同的字首(Prefix)。

分析

這個問題,看起來簡單,實際上各種邊界條件多,坑多。筆者花了一點時間才完全在leetcode上跑通。這次得到的教訓有兩個:
1. 在解一個演算法題時,不要找到一個解法,就不去思考其他的解法了,要儘可能想出多的解法,用筆在紙上列出來,評估一個複雜度低的解法。如果不通,迅速換一個解法,不要鑽牛角尖。
1. 在分解一個問題的時,要考慮各種邊界條件。例如,字元陣列就一個空字元“”,怎麼處理,輸入字串就一個字元“a”,如果輸入字串兩個字串“a”,“a”都是a怎麼處理?這些邊界條件,的確要認真處理。

程式碼分析

public class Solution {
    public String longestCommonPrefix(String[] strs) {

        String retStr = "";
        //如果輸入的字串陣列為空,那麼返回空
        if (strs.length <= 0)
            return "";

        //如果輸入的字串陣列只有一個字串,那麼就輸出這個字串
        if (strs.length == 1)
            return strs[0];

        //上面兩個邊界條件處理後,剩下的肯定是多個字串了
//求解字串陣列中長度最短的字串 int minLen = strs[0].length(); int idx = 0; for (int i = 0; i < strs.length; i++) { if (strs[i].length() < minLen) { minLen = strs[i].length(); idx = i; } } //演算法核心部分,拿兩個字串來比較 //如果每個字串的同樣位子的字元相同,則flag==1
//例如"acd"和"ace"就ac相同,那麼把a和c累加到返回字串上去 int i, j; int flag = 0; for (j = 0; j < minLen; j++) { for (i = 1; i < strs.length; i++) { if (strs[0].charAt(j) == strs[i].charAt(j) && strs[idx].charAt(j) != '\0') { flag = 1; // retStr += ch; } else { //flag==0說明字元不相同,就沒有遍歷的必要了 flag = 0;break; } } if (flag == 1) { char ch = strs[0].charAt(j); retStr += ch; }else{ //flag==0說明字元不相同,就沒有遍歷的必要了 break; } } return retStr; } }

後記

之前採用的演算法是,尋找相同prefix的下標j,在通過retStr = strs[0].subString(0,j)來試圖解這個題,但是那樣,各種邊界條件會折磨死人。還不如這個判斷一次,累加一次來得實在。如果,你也做錯了,沒關係,只有不停的試錯,才能找出知識的缺陷在哪裡。

相關推薦

[leetcode]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 stri

LeetcodeLongest Common Prefix

寫一個功能實現列表中字串的公共字首: 例如:輸入列表strs= [“asdf”,”ascd”,”assssssssss”] 輸出結果”as” 在這裡,你要學會熟悉的切分字串方法。 首先,要找到公共字首,就必須將列表中的字串與下一個字串進行比較,拿出兩個字串中公共

LeetCode Longest Common Prefix

Problem Write a function to find the longest common prefix string amongst an array of strings. 就是找出一個字串陣列中元素,最長的通用字首。例如:{

[LeetCode] 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

LeetCode-- Longest Common Prefix

問題 這個題,leetcode給的資訊很少。題目本身是要求一組字串的相同的字首(Prefix)。 分析 這個問題,看起來簡單,實際上各種邊界條件多,坑多。筆者花了一點時間才完全在leetcode上跑通。這次得到的教訓有兩個: 1. 在解一個演算法題時,不

LeetCode | Longest Common Prefix(最長公共字首)

題目: Write a function to find the longest common prefix string amongst an array of strings. 求一系列字串的公共字串字首。 題目解析: 沒有想到很好的方法,只能一個字串一個字串的相比較

leetcode Longest Common Prefix不同字串的公共字首

思路: 當任意2個字串的最長公共字首,其長度肯定不會超過最短的字串的長度,設最短的字串長度為n,那麼只要比較這2個字串的前n個字元即可。 如此得出這2個字串的最長公共字首prefix後,再拿prefix作為新的字串和陣列中的下一個字串比較,方法同上。需要注意的是,如果陣列中

LeetCode 14. Longest Common Prefix

color pan solution 裏的 string 內容 自己的 所有 一定的 Write a function to find the longest common prefix string amongst an array of strings. 題目的描述

[LeetCode] 14. Longest Common Prefix 最長共同前綴

not turn npr longest stc tostring ref 執行 common Write a function to find the longest common prefix string amongst an array of strings. 這

LeetCode】014. Longest Common Prefix

mon 暴力 turn fin fix HA efi res div Write a function to find the longest common prefix string amongst an array of strings. 題解:   簡單的暴力遍歷

LeetCode Notes_#14 Longest Common Prefix

LeetCode Notes_#14 Longest Common Prefix LeetCode  Contents Problem Solution 思路

leetcode-14. Longest Common Prefix

題目型別: 字串 題意: Write a function to find the longest common prefix string amongst an array of strings. 找出一個字串陣列中所有字串的最長共同==字首==。 字串API: =

LeetCode】14. Longest Common Prefix - Java實現

文章目錄 1. 題目描述: 2. 思路分析: 3. Java程式碼: 1. 題目描述: Write a function to find the longest common prefix string amongst an arr

LeetCode 14 Longest Common Prefix 解題報告

描述 給定一個字串集合,需要求出這些字串的公共字首 樣例 Input: ["flower","flow","flight"] Output: "fl" 思路 首先獲得最短字串的長度,按照這個長度進行外層遍歷,之後以此遍歷每個字串,看是否滿足相等的條件。如果採用的是 s[i] == s[i-1

LeetCode】#14最長公共字首(Longest Common Prefix)

【LeetCode】#14最長公共字首(Longest Common Prefix) 題目描述 編寫一個函式來查詢字串陣列中的最長公共字首。 如果不存在公共字首,返回空字串 “”。 示例 示例 1: 輸入: [“flower”,“flow”,“flight”] 輸出: “

LeetcodeLongest Common Prefix

Longest Common Prefix Write a function to find the longest common prefix string amongst an array of strings. If there is no common prefix, ret

Leetcode 14】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 stri

LeetCode刷題_14. Longest Common Prefix

原題連結:https://leetcode.com/problems/longest-common-prefix/description/ Write a function to find the longest common prefix string amongst an arr

LeetCode 14. 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 stri

leetcode-14】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 empt