在力扣做一道计算最长公共前缀的问题,链接如下:
https://leetcode.cn/problems/longest-common-prefix/
题目难度本身并不大,但是题目要求输入的数组的每个元素都是包含小写字母的字符串
然后下面是我给出的代码:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int n = 0;
string ans;
int length = strs.size();
bool flag = true;
if(length == 1) return strs[0];
for(int i = 0; i < 200&&flag == true; i++){
for(int j = 0; j < length-1&&flag == true; j++){
char former = strs[j][i];
char later = strs[j+1][i];
if(former == later) n++;
else{
n = 0;
flag = false;
}
if(n == length-1){
ans += strs[j][i];
n = 0;
}
}
}
return ans;
}
};
在正常的情况下都可以实现,唯独遇到比较奇特的测试案例时进行了报错。
我查了一下,这个报错信息,应该是在边界上出了问题,但我不清楚我哪个地方越界了,请各位指点,万分感谢!
在第一个for循环后面加上判断,是任何一个元素是空字符串,则直接返回空字符串。因为空字符串与其他任何字符串的最长公共前缀都为""空字符串