将一个字符串逆序

将一个字符串逆序有多重方式实现,下面的三种方式均是在原字符串上操作。

方式一.使用数组的方式操作

 1 char *reversestr(char *str)
 2 {
 3     char *temp = str;
 4     int indexLeft = 0;
 5     int indexRight = 0;
 6     if (str == NULL)
 7     {
 8         return NULL;
 9     }
10     while(*temp != '')
11     {
12         indexRight++;
13         temp++;
14     }
15     //指向最后一个字符''的前一个
16     indexRight = indexRight - 1;
17     
18     while(indexRight > indexLeft)
19     {
20         char temp = str[indexLeft];
21         str[indexLeft++] = str[indexRight];
22         str[indexRight--] = temp;
23     }
24 
25     return str;
26     
27 }


方式二 .使用指针的方式操作

char *reverseStr(char *str)
{
    char *left = str;
    char *right = str;
    if(str == NULL)
    {
        return NULL;
    }
    while (*right != '')
    {
        right++;
    }
    right--;
    while (right > left)
    {
        char temp = *right;
        *right++ = *left;
        *left++ = temp;
    }
    return str;
}

方式三.不使用第三的变量 

 1 char *reversestr1(char *str)
 2 {
 3     char *left = str;
 4     char *right = str;
 5     if (str == NULL)
 6     {
 7         return NULL;
 8     }
 9     while(*right != '')
10     {
11         right++;
12     }
13     right--;
14     /*使用异或运算的特点 a = a^b^b b = a^b^a */
15     while (right > left)
16     {
17         *left = *left ^ *right;
18         *right = *left ^ *right;
19         *left = *left ^ *right;
20         left++;
21         right--;
22     }
23     return str;
24 }
原文地址:https://www.cnblogs.com/jianghg/p/4495004.html