码迷,mamicode.com
首页 > 其他好文 > 详细

[模拟,字符串处理]7-7 翻转单词顺序 (20分)

时间:2020-02-04 21:57:03      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:define   格式   ret   c++   ace   hello   字符串处理   max   efi   

给定一个字符串,翻转该字符串,翻转时单词中的字符顺序不变。例如,如果字符串为"Hello World",则翻转后为"World Hello"。单词间以一个或多个空格分隔。注意,字符串开头和结尾都可能有多个空格。

输入格式:

输入可能包括多行。每行代表一个字符串,除了空格外,标点符号和普通字母一样处理。你可以认为一行的字符总数不会超过50000个,单词数不会超过600,每个单词的长度也不会超过30。

输出格式:

输出包括多行,每行对应输入的一行,为翻转后的字符串。

输入样例:

student. a am I

输出样例:

I am a student.

 

 1 #include <bits/stdc++.h>  // 保留了空格
 2 using namespace std;
 3 #define maxN 50005
 4 int main()
 5 {
 6     stack<string> st;
 7     string s, tmp;
 8     int len, i;
 9     while(getline(cin,s))
10     {
11         i = 0;
12         len = s.length();
13         while(i < len)
14         {
15             tmp = "";
16             while(s[i] ==   && i < len)
17             {
18                 tmp = tmp + s[i];
19                 i++;
20             }
21             if(tmp.length() > 0)
22                 st.push(tmp);
23             tmp = "";
24             while(s[i] !=   && i < len)
25             {
26                 tmp = tmp + s[i];
27                 i ++;
28             }
29             if(tmp.length() > 0)
30                 st.push(tmp);
31         }
32         while(!st.empty())
33         {
34             s = st.top();
35             st.pop();
36             cout << s;
37         }
38         cout << endl;
39     }
40     return 0;
41 }

附上单行柳神代码:

 1 #include <iostream>
 2 #include <stack>
 3 using namespace std;
 4 int main()
 5  {
 6  stack<string> v;
 7  string s;
 8  while(cin >> s) v.push(s);
 9  cout << v.top();
10  v.pop();
11  while(!v.empty()) {
12  cout << " " << v.top();
13  v.pop();
14  }
15  return 0;
16 }

 

[模拟,字符串处理]7-7 翻转单词顺序 (20分)

标签:define   格式   ret   c++   ace   hello   字符串处理   max   efi   

原文地址:https://www.cnblogs.com/luoyoooo/p/12261605.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!