题目描述
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main()
{
stack<string> st;
string str;
string mid;
getline(cin, str);
for (int i = 0; i < str.size(); i++)
{
if (str[i] != ' ')
{
mid += str[i];
}
else
{
st.push(mid);
mid.clear();
st.push(" ");
}
if (i == str.size() - 1)
{
st.push(mid);
}
}
int size = st.size();
for (int j = 0; j < size; j++)
{
cout << st.top();
st.pop();
}
}
题解:
因为是需要逆序输出,所以借助了一下栈,在最后for循环输出的时候一定要注意不能是st.size(),随着栈的弹出,栈的大小在改变,所以要先保存栈大小。然后再top pop。