Longest Common Prefix-new

题目:Write a function to find the longest common prefix string among an array of strings.
思路:
1. 设定初始Prefix为""
2. 对第二个字符串-最后一个字符串里的第n个字母进行循环。以第一个字符串里的第n个字母为比较对象
如果循环过程中某一个字符串的字母n不等于第一个字符串里的字母n了,return 现在已有的prefix
3. 循环结束,更新现有的Prefix,加上字母n

对第一个字符串内的所有字母进行2 3 两步的循环。
最后beat 51%的人。

 1 class Solution {
 2 public:
 3 string longestCommonPrefix(vector<string>& strs) {
 4 string prefix="";
 5 if(strs.empty()) return prefix;
 6 for(int i=0; i<strs[0].size(); i++){ // go through each character
 7 for(int j=0;j<strs.size();j++){
 8 if(strs[j][i]!=strs[0][i])
 9 return prefix;
10 }
11 //if(i==strs.size()) //means all the string has been checked, this condition could be omitted
12 prefix+=strs[0][i];
13 }
14 return prefix;
15 }
16 };

 

尝试了一下网上另一种解答

class Solution { 
public:
string longestCommonPrefix(vector<string>& strs)
{
int min = 0;
while (strs.size() > 0)
{
for (string s: strs)
{
if (s.size() == min || s[min] != strs[0][min]) return strs[0].substr(0, min);
}
min++;
}
return "";
}
};

  


其实思路是一致的。尝试了下以前用的比较少的一些函数比如subsrt 和for(string s:strs)的写法。但不知道为啥这方法运行速度很慢?只打败了2%的人。

posted @ 2018-04-17 03:16  吹离了空白  阅读(111)  评论(0)    收藏  举报