Я пытаюсь сделать эту проблему на hackerrank:
https://www.hackerrank.com/challenges/funny-string/copy-from/17051736
Размера входной строки, как предполагается, варьируется в пределах от 1 до 10000, но когда я представить этот код, он показывает ошибку сегментации в тестовых # 7,8 и 9.
Но когда я использую тип данных массива char вместо строкового типа данных при одинаковой логике, все тестовые примеры передаются без проблем.
Почему это происходит? Должен ли строка типа данных хранить 10 000 символов в порядке?Почему я получаю ошибку сегментации в этом коде?
#include<iostream>
#include<cstring>
#include<cmath>
#include<string>
using namespace std;
int main()
{
string S,R;
int T,i,j,flag,size;
cin>>T;
cin.ignore();
while(T--)
{
cin>>S;
for(i=S.size()-1,j=0;i>=0;--i,++j)
R[j]=S[i];
size=S.size();
for(i=1,flag=1;i<size;++i)
{
if(abs(S[i]-S[i-1]) != abs(R[i]-R[i-1]))
{
flag=0;
break;
}
}
if(flag==1)
cout<<"Funny"<<endl;
else
cout<<"Not Funny"<<endl;
}
return 0;
}