运行时错误:基0x000000000000溢出到0xffffffffffffffff的指针索引表达式 (basic_st



问题是在字符串数组中找到最大的公共前缀字符串。

示例 1:

输入: ["花","流","飞行"]

输出:"fl">

这是我迄今为止尝试过的。

class Solution {
public:
string longestCommonPrefix(const vector<string>& v) {
if ( v.empty() )
{
return 0;
}
string  smin = *min_element(v.begin(), v.end(), 
[] (const std::string& s1, const std::string& s2) { 
return s1.length() < s2.length(); }
);
string str="";
int i,j;
for(i=0; i<smin.size(); i++){
str+=smin[i];
for(j=0; j<v.size(); j++){
if(v[j].find(str)==string::npos){                    
str=str.substr(0, str.length() - 1);
return str;
}                
}
}
return str;
}
};

上面以预期成果为例。

我得到的错误消息是 - :

Runtime error: pointer index expression with base 0x000000000000 overflowed to 0xffffffffffffffff

我已经对此进行了类似的研究并尝试实现它们,但错误没有发生。请有人帮我解决这个问题。

向量中有一个空字符串。 在某些时候,您计算长度减去 1。 然后将其用于结束索引子str。

通常,您需要学习使用调试器,它将准确地告诉您哪一行错误以及该行上的变量是什么样子的。