天天看點

leetcode.14----------Longest Common Prefix

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

找出所有字元串的最長公共字首。這道題很簡單,但需要注意減少比較字元的操作次數。

2個字元串的最長公共字首,其長度肯定不會超過最短的字元串的長度,設最短的字元串長度為n,那麼隻要比較這2個字元串的前n個字元即可。

如此得出這2個字元串的最長公共字首prefix後,再拿prefix作為新的字元串和數組中的下一個字元串比較,方法同上。

需要注意的是,如果數組中的某個字元串長度為0,或者求得的目前最長公共字首的長度為0,就直接傳回空字串。

​​Accepted​​ 7 ms
class Solution {
public:
string longestCommonPrefix(vector<string> &strs) {
    string s("");
    if (strs.size() == 0) return s;
    if (strs.size() == 1) return strs[0];

    for (int j=0; j < strs[0].size(); ++j) {
        char ch = strs[0][j];
        for (int i=1; i<strs.size(); ++i) 
            if (ch != strs[i][j]) return s;
        s += ch; 
    }

    return s;
}
};