C++问题---字符串逆转问题

来源:互联网 发布:什么语言开发了java 编辑:程序博客网 时间:2024/04/27 16:42

-------------------------------------
典型例题11:C++问题---字符串逆转问题;
-------------------------------------
 1    #include <iostream>
 2    #include <sys/time.h>
 3    #include <cstdlib>
 4    #include <cstring>
 5   
 6    using namespace std;
 7   
 8    #define P puts
 9   
10    char* strrev1(const char* str)
11    {
12        int len = strlen(str);
13   
14        char* tmp = new char[len + 1];
15   
16        strcpy(tmp,str);
17   
18        for (int i = 0; i < len/2; ++i)
19            {
20                char c = tmp[i];
21                tmp[i] = tmp[len-i-1];
22                tmp[len-i-1] = c;
23            }
24        return tmp;
25    }
26   
27    char* strrev2(const char* str)
28    {
29        char* tmp = new char[strlen(str) + 1];
30        strcpy(tmp,str);
31        char* ret = tmp;
32        char* p = tmp + strlen(str) - 1;
33        while (p > tmp)
34            {
35                char t = *tmp;
36                *tmp = *p;
37                *p = t;
38                --p;
39                ++tmp;
40            }
41        return ret;
42    }
43   
44    char* strrev3(const char* str)
45    {
46        char* tmp = new char[strlen(str) + 1];
47        strcpy(tmp,str);
48        char* ret = tmp;
49        char* p = tmp + strlen(str) - 1;
50        while (p > tmp)
51            {
52                *p ^= *tmp;
53                *tmp ^= *p;            
54                *p ^= *tmp;
55                --p;
56                ++tmp;
57            }
58        return ret;
59    }
60   
61    char* strrev4(const char* str)
62    {
63        char* tmp = new char[strlen(str) + 1];
64        strcpy(tmp,str);
65        char* ret = tmp;
66        char* p = tmp + strlen(str) - 1;
67        while (p > tmp)
68            {
69                *p = *p + *tmp;
70                *tmp = *p - *tmp;
71                *p = *p - *tmp;
72                --p;
73                ++tmp;
74            }
75        return ret;
76    }
77   
78    char* strrev5(char* str,int len)
79    {
80        if (len <= 1)
81            return str;
82        char t = *str;
83        *str = *(str + len -1);
84        *(str + len -1) = t;   
85        return (strrev5(str + 1,len - 2));
86    }