翻转字符串
题目描述
输入“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--控制
二、输入判断特殊字符(空格/结束/换行),是则考虑结束还是打印输出,同时增加了栈的输出和清理栈顶(遇到空格时,就要将之前的字符串进行逆序)
三、正常的字符,要进行压栈操作

浙公网安备 33010602011771号