[模拟,字符串处理]7-7 翻转单词顺序 (20分)
Posted luoyoooo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[模拟,字符串处理]7-7 翻转单词顺序 (20分)相关的知识,希望对你有一定的参考价值。
给定一个字符串,翻转该字符串,翻转时单词中的字符顺序不变。例如,如果字符串为"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分)的主要内容,如果未能解决你的问题,请参考以下文章