用栈的思想处理字符串倒置问题更清晰

如杭电acm题目

The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow. Each test case contains a single line with several words. There will be at most 1000 characters in a line.
 
Output
For each test case, you should output the text which is processed.
 
Sample Input
3
olleh !dlrow
m'I morf .udh
I ekil .mca
 
Sample Output
hello world!
I'm from hdu.
I like acm.
Hint
Remember to use getchar() to read '\n' after the interger T, then you may use gets() to read a line and process it.
 
Author
Ignatius.L

 我写的代码,还有地方能更精简

 

# include <stdio.h>

# include <string.h>

int main(){

 int top,num,i;

 char a[1001];  

char stack[1001];

 scanf("%d",&num);  

getchar();  

while(num--){   

gets(a);   

top=0;   

for(i=0;i<strlen(a)+1;i++){   

 if(a[i]==' '){     

while(top)     

 printf("%c",stack[--top]);     printf(" ");    }      

if(a[i]=='\0'){     

while(top)      

printf("%c",stack[--top]);     

printf("\n");     

break;    }    

if(a[i]!=' '&&a[i]!='\0')     

stack[top++]=a[i];

   }  

}  

return 0;

}

}

转载于:https://www.cnblogs.com/shaomg/p/3551498.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值