问题描述:Write a function that takes a string as input and returns the string reversed.
Example:
Given s = "hello", return "olleh".
我的解法:
char* reverseString(char* s) {
int len,i;
len=strlen(s);
char str1[len+1];
for(i=0;i<len;i++){
str1[i]=s[len-1-i];
}
str1[len]='\0';
strcpy(s,str1);
return s;
/*int l = 0;
int r = strlen(s)-1;
char c;
while(l<r)
{
// swap chars
c = s[l];
s[l] = s[r];
s[r] = c;
l++;
r--;
}
return s;*/
}
遇到这个问题,首先想到的是字符串倒置,将字符串内容放入数组中,倒序输出数组元素;
后来运行,发现结果总是乱码,想到这是一个自定义函数,字符串出现在参数中。这样返回一个函数内局部变量会出现错误,于是最后将数组内容重新复制到字符串,问题解决了。关键代码:strcpy(s,str1);
别人的解法:
char* reverseString(char* s) {
int l = 0;
int r = strlen(s)-1;
char c;
while(l<r)
{
// swap chars
c = s[l];
s[l] = s[r];
s[r] = c;
l++;
r--;
}
return s;
}