【发布时间】:2022-01-07 21:30:21
【问题描述】:
vector<string> solution(vector<string> ia) {
int maxi = -1;
int size = ia.size();
vector<string> iasol;
for (int i = 0; i < size; i++) {
int m = ia[i].length();
cout << m << " " << maxi << endl;
if (m > maxi) {
maxi = m;
}
}
for (int i = 0; i < size; i++) {
int m = ia[i].length();
if (m == maxi) {
iasol[i] = ia[i];
cout << iasol[i];
}
}
return iasol;
}
如果有帮助,这就是问题
给定一个字符串数组,返回另一个包含所有最长字符串的数组。
例子
对于 inputArray = ["aba", "aa", "ad", "vcd", "aba"],输出应该是
solution(inputArray) = ["aba", "vcd", "aba"].
【问题讨论】:
-
iasol向量中有多少个字符串? (零。没有。) -
在您的第二个循环中,您正在索引一个空向量。你不能这样做来插入,你只能这样做来访问一个 alrady-existing 元素。而不是
iasol[i]=ia[i];做iasol.push_back(ia[i]); -
另外,这可以通过单次遍历数据来解决。
-
将
[]的用法更改为at()。然后你不会得到分段错误,但你会得到一个std::out_of_range异常抛出,告诉你你做错了什么。 -
Here is an example。只需在正确的位置使用
at()即可确定问题。答案部分给出了解决问题的方法。
标签: c++ string algorithm vector function-definition