leetcode14 最长公共前缀
题意是求一个字符串数组的最长共同前缀,自己的思路比较简单,遍历就完事。贴代码
class Solution { public: string longestCommonPrefix(vector<string>& strs) { int n = strs.size(); string result = ""; int t = 0; if(!n) return result; while(t<strs[0].length()) { char temp = strs[0][t]; for(int i = 1 ; i < n ; i++) { if(strs[i][t]!=temp) return result; } result.insert(result.end(),temp); t++; } return result; } };
还有一个很秀的方法,首先将数组中的所有元素排序,然后对比最前与最后两个字符串,两个的公共部分即为所有字符串的公共部分。贴代码
class Solution { public: string longestCommonPrefix(vector<string>& strs) { int n = strs.size(); string result = ""; if(strs.empty()) return result; sort(strs.begin(),strs.end()); string st = strs.front(), en = strs.back(); int i, num = min(st.size(), en.size()); for(i = 0; i < num && st[i] == en[i]; i ++); result = st.substr(0,i); return result; } };

浙公网安备 33010602011771号