字符串逆序(重新申请空间和不用)
来源:互联网 发布: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