1. 程式人生 > >LeetCode 14 Longest Common Prefix 解題報告

LeetCode 14 Longest Common Prefix 解題報告

描述

給定一個字串集合,需要求出這些字串的公共字首

樣例

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

思路

首先獲得最短字串的長度,按照這個長度進行外層遍歷,之後以此遍歷每個字串,看是否滿足相等的條件。如果採用的是 s[i] == s[i-1]注意要從1開始遍歷,另外本題需要注意只有一個字串時要返回本身,空集返回空字串。

程式碼

#include <iostream>
#include<string>
#include <vector>
#include <climits>
#include<algorithm>

using namespace std;

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string res = "";
        if(strs.size()== 0){return "";}
        if(strs.size()== 1){return strs[0];}

        int minlen = INT_MAX;
        for(int i=0;i<strs.size();i++){
            minlen = std::min(minlen,(int)strs[i].size());
        }

        for(int i=0;i<minlen;i++){
            for(int j=1;j<strs.size();j++){
                if(strs[j][i] != strs[j-1][i]){
                    return res;
                }
            }
            res += strs[0][i];
        }

        return res;
    }
};

參考連結

原題連結