1. 程式人生 > >leecode第十四題(最長公共前綴)

leecode第十四題(最長公共前綴)

ges 沒有 -html default break 字符 字符串 return math

技術分享圖片

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {        
        string res="";
        int len=strs.size();//數組長度
        int lens=0;//最長字符串長度
        
        if(len==0)//用來判斷該數組內沒有任何字符串內容的情況,我是記得判斷,但是判斷條件出問題,寫的strs==“”,這肯定不對啊,strs是數組
            return
res; for(int i=0;i<len;i++) { if (strs[i].size()>lens) lens=strs[i].size(); } bool flag_end=false; int max_len=0; for(int i=0;i<=lens;i++)//一定要《<=,因為要判斷多一位‘\0’,而這個字符沒在.size()中統計出來
{ if(strs[0][i]==\0)//我丫一開始寫成了/0 flag_end=true; char ch=strs[0][i];//我先以第一個字符串為基準 for(int j=1;j<len;j++) { if(strs[j][i]!=ch || strs[j][i]==\0) { flag_end=true;//如果不滿足了就翻轉flag
} } if(flag_end) { max_len=i;//記錄當前不滿足的index break; } } return strs[0].substr(0,max_len);//如果str=“abc”,max_len=2,打印出來就是“ab”,這個要記住了 } };

分析:

錯誤都在上面了,唉,真是太慘了,改bug比寫代碼時間都長。

題解給了好多思想,分治啊二分啊等等,但是懶得看了,我這個時間復雜度最多也是O(s),其中 S為數組裏所有字符串中字符數量的總和。

leecode第十四題(最長公共前綴)