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 };