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
Leetcode—Longest 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”] 輸出: “
Leetcode 之 Longest 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