为什么我在此代码中出现分段错误?

时间:2016-02-02 13:42:56

标签: c++ segmentation-fault

我正试图在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);

2 个答案:

答案 0 :(得分:3)

for(i=S.size()-1,j=0;i>=0;--i,++j)
    R[j]=S[i];

R[j]对任何j无效,因为R的尺寸为零。

如果您希望RS相反,那么您可以使用

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是长度。只需要弄清楚循环的中间结束,否则你最终会得到两倍的最大比较。