字符串逆序(重新申请空间和不用)

来源:互联网 发布:django ajax json 编辑:程序博客网 时间:2024/06/05 06:43
#include <iostream>#include <cctype>#include <algorithm>#include<stdio.h>using namespace std;char* Reverse(char* s){    //将q指向字符串最后一个字符    char* q = s ;    while( *q++ ) ;    q -= 2 ;printf("%c %d %d",*q,q,s);    //分配空间,存储逆序后的字符串。    char* p = new char[sizeof(char) * (q - s + 2)] ;//加 2  是因为q s两个地址都占用了。再添加一个结束符 \0    char* r = p ;    // 逆序存储    while(q >= s)        *p++ = *q-- ;    *p = '\0' ;    return r ;}//不占用多余空间char* Reverse2(char* s){    // p指向字符串头部    char* p = s ;    // q指向字符串尾部    char* q = s ;    while( *q )        ++q ;    q -- ;    // 交换并移动指针,直到p和q交叉    while(q > p)    {        char t = *p ;        *p++ = *q ;        *q-- = t ;    }    return s ;}int main(){    char name[100] ;   gets(name);    char * ans=Reverse2(name);    cout<<ans<<endl;    return 0;}


                                             
0 0
原创粉丝点击