做為年假完恢復信心的題目(?)
題目沒寫要在同一個array內完成,
於是..............
XD?!
Reverse String
char* reverseString(char* s) {
int length = strlen(s);
if (length < 2)
return s;
char *ret = malloc(sizeof(char)*(length+1));
for (int i = 0; i< length; i++)
ret[i] = s[length-1-i];
ret[length]=0;
return ret;
}
寫在同一個array好像也挺快
是真正的easy XD
多了內建的swap即可.
char* reverseString(char* s) {
int length = strlen(s);
if (length < 2)
return s;
for (int i = 0; i< (length/2); i++)
{
char tmp;
tmp = s[length-1-i];
s[length-1-i] = s[i];
s[i] = tmp;
}
return s;
}
20230617 更新
看來這題目也有更新了!輸入參數多了字串長度。
把迴圈裡算尾巴index的部分也先指定起來, j - - 減減之後速度似乎有變快。
不用先去讀 i 的值再來減?!
void reverseString(char* s, int sSize){
char tmp;
int middle = sSize/2;
for (int i=0, j=sSize-i-1;i<middle;i++,j--)
{
tmp=s[i];
s[i]=s[j];
s[j]=tmp;
}
}
沒有留言:
張貼留言