编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
我的思路:
1.第一次我的想法是遍历数组将每一个字符串的字母按顺序放入新的数组,在对每一个数组进行比较,但是,,,这种想法显然是又臭又长,所以我换了一种思路
2.我的想法是通过vec[][]的方式访问每个数组成员的第一个字符,根据循环可以简单地判断出是否相等,相等写入一个空的字符串,以此类推,直到不相等,返回此字符串。。。。这个想法就简单的多,但是 ~~~~~我的内存消耗只超过了0.9%。。。。。。都是大佬都是大佬。。。溜了溜了~~~~~~~~~~
1 class Solution { 2 public: 3 string longestCommonPrefix(vector<string>& strs) { 4 5 if(strs.size() == 0) 6 return ""; 7 /*vector<char>vec;*/ 8 int flat = 1; 9 string vec ; 10 int x = strs.size(); 11 auto len = strs[0].size(); 12 for( int a = 0;a<strs.size()-1;a++) 13 { 14 if(len>strs[a+1].size()) 15 len =strs[a+1].size(); 16 } 17 for(int i = 0;i<len;i++) 18 { 19 for(int j = 0;j<x-1;j++) 20 { 21 if(strs[j][i]!=strs[j+1][i]) 22 flat = 0; 23 } 24 if(flat == 1) 25 vec = vec+strs[0][i]; 26 else 27 return vec; 28 } 29 return vec; 30 } 31 };