添加无符号偏移量



所以我在LeetCode上解决了一个问题,其中输入:["花","流","飞行"]输出:";fl"。。所以我找到了一个解决方案,并在我的本地Visual Studio编译器上完美地工作,但当我将其提交给服务器时,服务器会发出以下消息";第924行:字符34:运行时错误:将无符号偏移量添加到0x603000000000溢出到0x60300000080(stl_vector.h(摘要:UndefinedBehaviorManitizer:未定义的行为/usr/bin//lib/gcc/x86_64-linux-gnu/8/../..//包括/c++/8/bits/sstl_vector.h:933:34";

为了进一步澄清问题,这是LeetCode上的问题链接最长公共前缀我的解决方案是

string longestCommonPrefix(vector<string>  strs) 
{

string temp;        
int count = 0;
int new_count = 0;
string::iterator iter1;
string::iterator iter2;
for (int i = 0; i != strs.size(); ++i) {        

if (i != str.size() - 1) {
cout << "if 1n";
iter1 = strs[i].begin();
iter2 = strs[i + 1].begin();

while (iter1 != str[i].end() && iter2 != str[i + 1].end()) {

if (*iter1 == *iter2 ) {
temp.push_back(*iter1);
++count;
}

if (*iter1 != *iter2)                   
break;              
++iter1;
++iter2;
}
}
if (i == str.size() - 1) {

iter1 = strs[i].begin();
iter2 = strs[i - 1].begin();
while (iter1 != str[i].end() && iter2 != str[i - 1].end()) {
if (*iter1 == *iter2 ) {
temp.push_back(*iter1);
++new_count;
}
if (*iter1 != *iter2)                   
break;

++iter1;
++iter2;
}
break;
}

i += 1;     
}
new_count = min(count, new_count);

if ( new_count == 0) {
return "";
}
temp = string(temp.substr(0, new_count));
return temp;
}

这将通过,但不确定错误:

#include <cstdint>
#include <string>
struct Solution {
static std::string longestCommonPrefix(
const std::vector<std::string>& strs
) {
std::string longest = "";
for (std::size_t letter = 0; std::size(strs) > 0; longest += strs[0][letter], ++letter) {
for (std::size_t word = 0; word < std::size(strs); ++word) {
if (
letter >= std::size(strs[word]) ||
(word > 0 && strs[word][letter] != strs[word - 1][letter])
) {
return longest;
}
}
}
return longest;
}
};

参考文献

  • 有关更多详细信息,请参阅讨论板。有很多公认的解决方案,包括各种语言和解释,有效的算法,以及渐近时间/空间复杂性分析1,2

相关内容

  • 没有找到相关文章

最新更新