[LeetCode] Longest Common Prefix 字符串公有前序


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

 

Hide Tags
  String
 
    這是一道很簡單的題目,判斷輸入的多個字符串的公有前序,簡單的邏輯遍歷查找就好。
算法流程:
  1. 判斷輸入的字符串數量,小於2時候做出相應返回。
  2. 獲取最短字符串的長度。
  3. 設定標記flag,控制跳出循環,與長度返回的長度len。
  4. 在最短字符串長度的范圍內循環。
  5. 循環中每次遍歷全部字符串len 位的字符。
  6. 遇到不同設置flag 跳出循環,如果全部都相同len+1 進入下次循環。
  7. 返回長度。

其實可以簡單點不求最短字符串長度,將這一步放入到判斷是否相同時候。

 

 1 #include <iostream>
 2 #include <vector>
 3 #include <string>
 4 using namespace std;
 5 
 6 class Solution {
 7 public:
 8     string longestCommonPrefix(vector<string> &strs) {
 9         int nvec = strs.size();
10         if(nvec<1) return "";
11         if(nvec<2) return strs[0];
12         int nmin = strs[0].length(),len=0;
13         bool flag = true;
14         for(int i =1;i<nvec;i++){
15             if(nmin>strs[i].length())   nmin = strs[i].length();
16         }
17         while(len<nmin){
18             for(int i=1;i<nvec&&flag;i++){
19                 if(strs[i][len]==strs[0][len])  continue;
20                 flag = false;
21             }
22             if(!flag)   break;
23             len++;
24         }
25         return strs[0].substr(0,len);
26     }
27 };
28 
29 int main()
30 {
31     vector<string> strs={"289","25324","22434","232","234"};
32     Solution sol;
33     cout<<sol.longestCommonPrefix(strs)<<endl;
34     return 0;
35 }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM