题目:https://leetcode-cn.com/problems/longest-common-prefix/
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
我的方法一:直接遍历
步骤
- 判断第2及后面的string每个位置上的字符是否和第一个字符串对应位置的字符一样,如果一样那么这个字符就是公共前缀
初始条件
- 从第一个字符串的第0个字符开始比较
边界条件
- 如果字符串个数0,直接返回“”
- 如果字符串个数1,那么直接返回第1个字符串
- 判断某个字符串的第N位时,需要判断N是否超过了字符串的长度
复杂度
时间:O(n),遍历一遍
空间:O(1)
代码
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int size = strs.size();
string ret;
if(size == 0) {
return ret;
}else if(size == 1) {
return strs[0];
}
int index = 0;
while(true){
if(strs[0].size() <= index) {
return ret;
}
for(int i = 1; i<size; i++){
if(strs[i].size() <= index) {
return ret;
}else if(strs[i][index] != strs[0][index]) {
return ret;
}
}
ret.push_back(strs[0][index]);
index++;
}
return ret;
}
};
网友评论