此问题在此处已有答案:
Array index out of bound behavior(共10个答案)
5天前关闭。
这是一个我一直在为这个代码战问题工作的解决方案:https://www.codewars.com/kata/56a5d994ac971f1ac500003e/cpp
我希望输出是"abigailtheta"
。我在vscode上得到了正确的输出,在从终端编译代码时也得到了正确的输出。但是codewars站点显示输出是"abigail
,这告诉我在我的输出中有空格尾部,这是我以前没有看到的(终端和vscode的输出没有字符串格式)。知道最后的空格是从哪里来的吗?
#include <iostream>
#include <string>
#include <vector>
#include <numeric>
class LongestConsec
{
public:
static std::string longestConsec(const std::vector<std::string> &strarr, int k)
{
std::string concChars{};
std::string maxChars{};
for (int i{}; i < strarr.size(); ++i)
{
concChars = strarr[i];
for (int y{i + 1}; y < (i + k); ++y)
{
concChars += strarr[y];
}
maxChars = (maxChars.length() < concChars.length()) ? concChars : maxChars;
}
return maxChars;
}
};
int main()
{
LongestConsec a;
std::vector<std::string> v{"zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"};
std::cout << a.longestConsec(v, 2) << '\n';
return 0;
}
1条答案
按热度按时间mnowg1ta1#
我觉得你的问题就出在这里。
如果
i+k >= strarr.size()
会发生什么?当y
大于strarr.len()-1
时,strarr[y]
是什么?它可以是空白,或者一些奇怪的字符,或者更好的是,它会使你的程序崩溃。