问题是在字符串数组中找到最大的公共前缀字符串。
示例 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。
通常,您需要学习使用调试器,它将准确地告诉您哪一行错误以及该行上的变量是什么样子的。