首先:runtime error的原因
一种是内存错误吧,例如访问了未定义的某块内存空间,int arr[8];但是访问了arr[8]这个元素。或者int *n = NULL; *n = 10;这种也会报内存错吧。还有就是有endless loop吧,可能没有能使程序跳出某循环的条件存在。
方法一:
程序:
char* reverseString(char* s) {
int i,n;
n = strlen(s);
char *r = (char*)malloc(sizeof(char)*(n+1));//注意内存个数n+1
for (i = 0; i < n; i++)
{
*(r + n - 1 - i) = *(s + i);
}
r[n] = '\0';//注意而且必须放在循环外面!!!
return r;
}
方法二;
C/C++ strlen(str)和str.length()和str.size()都可以求字符串长度,其中str.length()和str.size()是用于求string类对象的成员函数,strlen(str)是用于求字符数组的长度,其参数是char*
char* reverseString(char* s) {
int i=0,n;
n = strlen(s)-1;
while (i<n)
swap(s[i++], s[n--]);
return s;
}
而在c++中:
class Solution {
public:
string reverseString(string s) {
int i = 0, j = s.size() - 1;//或者s.length
while(i < j){
swap(s[i++], s[j--]);
}
return s;
}
};