题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “fl”
解释: 输入不存在公共前缀。
解题思路
- 若字符串数组为空,返回空字符串,result = “””;
- 以字符串数组中的某一字符串为准(这里不一定需要找到最短的那个,任一即可,比如可以取数组中的第一个字符串),逐个比较该字符串中的每一个字符是否也存在于其他字符串的相应的位置,若是,该字符公共子串;若否,最长公共子串截止,返回。所以这里是存在两层循环的,首先取选定字符串中的字符,然后以此字符为比较对象逐个遍历其他所以字符串相应位置。
代码
参考借鉴了博客大佬的做法
// 查找字符串数组中的最长公共前缀
class Solution{
public:
string longestCommonPrefix(vector<string>& strs){
string result = "";
if(strs.empty())
return result;
int i = 0, j;
while(i<strs.size())
{
char tmp = strs[0][i];
for(j=1; j<strs.size(); j++)
{
if(strs[j][i] == tmp)
continue;
else
return result;
}
result += tmp;
i++;
}
return result;
}
}
几点注意
- vector的使用
vector<string>$ strs这里的形参表示一个内部数据类型为string的vector 的引用,这个vector名字是strs; - 字符串为空
.empty(); - 字符串数组的长度和字符串的长度都可用
.size()来得到。
未来镇楼~~
4432

被折叠的 条评论
为什么被折叠?



