我正试图在hackerrank上做这个问题:
https://www.hackerrank.com/challenges/funny-string/copy-from/17051736
输入字符串的大小应该在1到10,000之间变化,但是当我提交此代码时,它会在测试用例#7,8和9中显示分段错误。
但是当我使用char数组数据类型而不是字符串数据类型且逻辑相同时,所有测试用例都会毫无问题地通过。
为什么会这样?字符串数据类型不能存储10,000个字符吗?
int kiekisfunkcija (int KKi[] , int & n);
答案 0 :(得分:3)
在
for(i=S.size()-1,j=0;i>=0;--i,++j)
R[j]=S[i];
R[j]
对任何j
无效,因为R
的尺寸为零。
如果您希望R
与S
相反,那么您可以使用
std::string R(S.rbegin(), s.rend());
//or
R.assign(S.rbegin(), s.rend());
答案 1 :(得分:0)
因为我不能作为新手发表评论: 为什么不从最后索引S作为获得R的快速方法? 比较S [i-1] - S [i]与S [n-i] - S [n-i-1] n是长度。只需要弄清楚循环的中间结束,否则你最终会得到两倍的最大比较。