leecode第十四題(最長公共前綴)
阿新 • • 發佈:2019-03-22
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是數組 returnres; 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第十四題(最長公共前綴)