[LeetCode] Longest Common Prefix

Longest Common Prefix

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

解题思路:

注意string类的append和push_back方法的使用。

1. 先求两个字符串的前缀,在求此前缀与剩下的字符串的前缀。代码如下:

class Solution {public:string longestCommonPrefix(vector<string> &strs){string result = "";int count = strs.size();if (count == 0){return "";}if (count == 1){return strs[0];}result = commonPrefix(strs[0], strs[1]);for (int i = 2; i < count; i++){if (result == ""){break;}result = commonPrefix(result, strs[i]);}return result;}private:string commonPrefix(string& s1, string& s2){int len1 = s1.length();int len2 = s2.length();int len = len1 < len2 ? len1 : len2;string result = "";for (int i = 0; i < len; i++){if (s1[i] == s2[i]){result.append(1, s1[i]);}else{break;}}return result;}};2. 逐位比较所有字符串,,若遇到不全相等的位,停止比较。这种方法效率更高。代码如下:

class Solution {public:string longestCommonPrefix(vector<string> &strs){string result = "";int count = strs.size();if (count == 0){return "";}int minLen = strs[0].length();for (int i = 1; i < count; i++){if (minLen > strs[i].length()){minLen = strs[i].length();}}for (int i = 0; i < minLen; i++){char c = strs[0][i];int j = 1;for (; j < count; j++){if (strs[j][i] != c){break;}}if (j == count){result.append(1, c);}else{break;}}return result;}};

蝙蝠黑暗中闯荡,树木默默的成长,蝴蝶破蛹后飞翔,

[LeetCode] Longest Common Prefix

相关文章:

你感兴趣的文章:

标签云: