首页 > 代码库 > leetcode 14

leetcode 14

14. Longest Common Prefix

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

找出字符串集合的最长公共前缀。

 

思路:先计算出前两个字符串的最长公共前缀s,然后用s去和剩下的字符串依次计算公共前缀,若计算结果的长度小于s的长度时替换s,

循环执行,直到所有字符串参与计算,此时s即为整个字符串集合的最长公共前缀。

需要注意当字符串集合为空时的处理。

代码:

 1 class Solution { 2 public: 3     string longestCommonPrefix(vector<string>& strs) { 4         string longest = ""; 5         int n = 0; 6         if(strs.size() == 1) 7         { 8             return strs[0]; 9         }10         if(strs.size() == 0)11         {12             return "";13         }14         strs[0].length() > strs[1].length() ? n = strs[1].length() : n = strs[0].length(); 15         for(int i = 0; i < n; ++i)16         {17             if(strs[0][i] == strs[1][i])18             {19                 longest += strs[0][i];20             }21             else22             {23                 break;24             }25         }26         for(int i = 2; i < strs.size(); ++i)27         {28             string s = "";29             for(int j = 0; j < longest.length(); ++j)30             {31                 if(j >= strs[i].length() && strs[i][0] == longest[0])32                 {33                     s = strs[i];34                 }35                 if(longest[j] == strs[i][j])36                 {37                     s += longest[j];38                 }39                 else40                 {41                     break;42                 }43             }44             longest = s;45         }46         return longest;47     }48 };

 

leetcode 14