翻转字符串

题目描述

输入“I LOVE YOU”;输出“UOY EVOL  I”

代码如下

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7 
 8     int n;
 9     char ch;  //字符
10     scanf("%d",&n);   //多组样例
11     getchar();   //接收输入的多个字符
12 
13     while(n--){
14         stack<char> s;    //字符类型的栈用来存储
15         while(true) {  
16             ch = getchar();  //一次读入一个字符
17             if(ch == ' '|| ch == '\n'||ch == EOF){  // 对读取的字符进行判断
18                     while(!s.empty()){
19                         printf("%c",s.top());    //输出栈顶
20                         s.pop();                //清楚栈顶
21                     }
22                     if(ch == '\n'||ch == EOF)
23                         break;
24                     printf(" ");     //遇到空格时,输出空格
25 
26             }
27             else {
28                 s.push(ch);    //入栈,而判断出栈的情况恰恰是写在特殊字符中
29             }
30 
31         }
32        printf("\n");
33     }
34 
35 
36 
37     return 0;
38 }

 总结

一、多次的输入样本测试,所以外循环n--控制

二、输入判断特殊字符(空格/结束/换行),是则考虑结束还是打印输出,同时增加了栈的输出和清理栈顶(遇到空格时,就要将之前的字符串进行逆序

三、正常的字符,要进行压栈操作

 

posted @ 2022-08-15 15:53  暖阳的雪  阅读(35)  评论(0)    收藏  举报