字符串反转问题的第一类问题是,对于This is a string,最终反转成string a is This。
我们可以利用栈的先进后出实现
第二类的字符串反转问题,也就是输入This is a string.,输出为.gnirts a si sihT:
由一节得出的每个字符串,再逆转就OK
char * p2 = str-1; while(*++p2); //一般要求不能使用strlen - #include
- #include
- #include
- #define Max 200
- void restr(char * str)
- {
- //先将整个字符串逆转
- char *p=str;
- int len=strlen(str);
- char *q=str+len-1;
- //每个字符交换
- while(p
- {
- *p=(*p)^(*q);
- *q=(*p)^(*q);
- *p=(*p)^(*q);
- p++;
- q--;
- }
- //逐个单词再逆转
- p=str;
- char * start,* end;
- while(p)
- {
- start=p;
- for(; *p!=' '&& *p!='\0';p++);
- end=p-1;
- while(start
- {
- *start=(*start)^(*end);
- *end =(*start)^(*end);
- *start=(*start)^(*end);
- start++;
- end--;
- }
- if(*p=='\0')
- break;
- p++;
- }
- }
- int main()
- {
- char s[Max];
- //scanf("%s",&s);//无法接收空格
- cin.getline(s,5000);
- printf("%s\n",s);
- restr(s);
- printf("%s\n",s);
- return 0;
- }
- i am a t
- i am a t
- t a am i
- Press any key to continue
阅读(582) | 评论(0) | 转发(0) |