| 
 | 
 
 
 楼主 |
发表于 2019-8-24 01:47:17
|
显示全部楼层
 
 
 
- #include <iostream>
 
 - #include <string>
 
 - #include <vector>
 
 - #include<algorithm>
 
 - using namespace std;
 
 - /*编写一个函数来查找字符串数组中的最长公共前缀。
 
  
- 如果不存在公共前缀,返回空字符串 ""*/
 
 - string longestCommonPrefix(vector<string> &strs)
 
 - {
 
 -         string result;
 
 -         /*判定向量是否为空*/
 
 -         if (strs.empty())
 
 -         {
 
 -                 result = {""};
 
 -         }
 
 -         else
 
 -         {
 
 -                 size_t s = strs.size();
 
 -                 if (s == 1)
 
 -                 {
 
 -                         return strs[0];
 
 -                 }
 
 -                 else if (s > 1)
 
 -                 {
 
 -                         /*构造向量字符串元素跳过对{"c", "c",...}和{"","",....}类似的向量元素的判定*/
 
 -                         strs[0] = strs[0] + "10lo";
 
 -                         strs[1] = strs[1] + "l01o";
 
 -                         /*初始化计数器*/
 
 -                         size_t count = 0;
 
 -                         /*定义数组,保存对比的计数结果*/
 
 -                         vector<int> arr;
 
 -                         for (size_t i = s - 1; i > 0; i--)
 
 -                         {
 
 -                                 for (size_t j = 0;; j++)
 
 -                                 {
 
 -                                         if (strs[0][j] != strs[i][j])
 
 -                                         {
 
 -                                                 break;
 
 -                                         }
 
 -                                         count++;
 
 -                                 }
 
 -                                 arr.push_back(count);
 
 -                                 /*重新初始化计数器*/
 
 -                                 count = 0;
 
 -                         }
 
 -                         size_t sa = arr.size();
 
 -                         /*从小到大排序*/
 
 -                         sort(arr.begin(), arr.end());                
 
 -                         /*首位元素就是最终结果*/
 
 -                         if (arr[0] == 0)
 
 -                         {
 
 -                                 result = {""};
 
 -                         }
 
 -                         else
 
 -                         {
 
 -                                 for (size_t i = 0; i < arr[0]; i++)
 
 -                                 {
 
 -                                         result.push_back(strs[1][i]);
 
 -                                 }
 
 -                         }
 
 -                 }
 
 -         }
 
 -         return result;
 
 - }
 
 - int main(int argc, char const *argv[])
 
 - {
 
 -         vector<string> a = {"boot", "boom", "boor", "boall"};
 
 -         vector<string> b = {"baac", "bacc", "b"};
 
 -         vector<string> c = {"flower"};
 
 -         vector<string> d = {"",""};
 
 -         vector<string> e =
 
 -                 {
 
 -                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
 -                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
 -                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
 -                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
 -                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
 -                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
 -                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
 -                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
 -                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
 -                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
 -                         "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
 
 -                 };
 
 -         cout << longestCommonPrefix(a) << endl;
 
 -         cout << longestCommonPrefix(b) << endl;
 
 -         cout << longestCommonPrefix(c) << endl;
 
 -         cout << longestCommonPrefix(d) << endl;
 
 -         cout << longestCommonPrefix(e) << endl;
 
 -         return 0;
 
 - }
 
 
  复制代码 |   
 
 
 
 |