第六天。(第七天签到,来修改个bug)
这道题还没有解决,不知道是我算法问题还是leetcode的bug,下面会贴出我的程序,希望路过的大神们指点指点啊!
先贴原题
Write a function that takes a string as input and returns the string reversed.
Example:
Given s = “hello”, return “olleh”.
我的bug代码:
char* reverseString(char* s) {
int len=strlen(s);
char *string=NULL;
string=(char*)malloc((len)*sizeof(char));
for(int i=0; i<len; i++)
{
*(string+i)=*(s+len-1-i);
}
return string;
}
提交后的错误提示:
Input: “race a car”
Output: “rac a ecar..”
Expected: “rac a ecar”
![]()
下面这个是我runcode得到的,我用其它的测试用例也都没有问题……
希望各位路过的大神指点一下,我这个究竟为什么会出错啊!
emmm……这里是第七天。
我的错误代码就不删了,给自己一个教训的同时也希望给各位路过的同学们提个醒。
贴修改后的程序:
char* reverseString(char* s) {
int len=strlen(s);
char *restr=NULL;
restr=(char*)malloc((len+5)*sizeof(char));
for(int i=0; i<len; i++)
{
*(restr+i)=*(s+len-1-i);
}
*(restr+len)='\0';
return restr;
}
学习笔记:
在c语言中,将字符串作为字符数组来处理。
C语言规定了一个“字符串结束标志”,以字符’\0’代表。
在程序中往往依靠检测’\0’的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。