class Solution { public: string longestCommonPrefix(vector<string>& strs) { if(!strs.size()) return ""; else if(strs.size() == 1 ) return strs[0]; else{ string pre_s = strs[0]; int len = strs.size(); for(int i =1;i< len;i++) pre_s = find_longest(pre_s,strs[i]); return pre_s; } } string find_longest(string &s1,string &s2) { int len = min(s1.length(),s2.length() ); int index = 0; while(index< len && s1[index] == s2[index] ) { index++; } return s1.substr(0,index); } };
这,随手写就能无敌么。盲猜有人死记硬背写了kmp了。这道题是前缀。压根不用kmp开个数组。
前缀比较压根不回溯,时间复杂度就是线性的。用kmp多此一举还浪费空间。竟然见到有人用kmp。