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             else
22             {
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                 else
40                 {
41                     break;
42                 }
43             }
44             longest = s;
45         }
46         return longest;
47     }
48 };

 

posted @ 2016-09-03 15:58  花椰菜菜菜菜  阅读(538)  评论(0编辑  收藏  举报