您的位置:首页 > 编程语言 > C语言/C++

Leetcode 14. Longest Common Prefix

2016-04-30 20:36 423 查看
Write a function to find the longest common prefix string amongst an array of strings.

题目大意:字符串的公告前缀

思路1:

题目分析:我们可以所有的字符串一位一位的比较,但最终发现这个方法时间较多,时间 12ms

代码如下:

class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {

if(strs.empty())
return "";

int i=0;bool flag=false;
while(true){
for(auto str:strs){
if(i>=str.size()||str[i]!=strs[0][i]){
flag=true;
break;
}
}
if(flag)
break;
i++;
}

return strs[0].substr(0,i);
}

};


思路2:

题目分析:一个串一个串的比较,假设前缀串是第一字符串。以后每遍历一个串先比较这两个串的大小长度,若长度比现在的前缀串的长度小,则更新前缀串的长度为这较小的数值,接着比较这两个串每个字符是否相同,若遇到不同更新前缀串的长度。时间 8ms

代码如下:

class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty()) {
return "";
}

int anslen=strs[0].size();

for(int i=1;i<strs.size();i++){
if(strs[i].size()<anslen)
anslen=strs[i].size();
for(int j=0;j<anslen;j++){
if(strs[0][j]!=strs[i][j]){
anslen=j;
break;
}
}
}

return strs[0].substr(0,anslen);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息