2018年2月21日 星期三

[344] Reverse String

字串反轉
做為年假完恢復信心的題目(?)
題目沒寫要在同一個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;
    }
}

沒有留言:

張貼留言