题目要求:
Write a function to find the longest common prefix string amongst an array of strings.
----------------------------------------------------------------------------------------------------------------
题目说明很简单,就是找出一个字符串数组的最长公共前缀
首先,如果字符串数组strs包含0个字符串,则返回空串“”;若只包含1个字符串,则返回自己;
然后,对字符串数字进行排序,自定义比较函数mycompare,将最短的字符串放在前面;
遍历字符串数组中的每一个字符串,比较当前字符串(0,i)子串是否和strs[0]的(0,i)子串相等,如果该数组所有字符串(0,i)子串都相等,则保存该子串并返回,如果不等,则将i递减,循环;
代码如下:
bool mycompare(string a, string b) { if(a < b) return true; return false; } class Solution { public: string longestCommonPrefix(vector<string>& strs) { if(strs.size() == 0) return ""; if(strs.size() == 1) return strs[0]; //对数组进行排序 sort(strs.begin(), strs.end(), mycompare); int flag = 0; string result = ""; for(int i = strs[0].length(); i > 0; i--) { string s = strs[0].substr(0, i); for(int j = 1; j < strs.size(); j++) { int len = s.length(); string temp = strs[j].substr(0, len); if(temp == s) { flag = 1; continue; } else { flag = 0; break; } } if(flag == 1) { result = s; return result; } } return result; } };