C++利用栈进行每个单词的单词反转
描述 输入一个句子(一行),将句子中的每一个单词翻转后输出。 输入 只有一行,为一个字符串,不超过500个字符。单词之间
以空格隔开。
输出
翻转每一个单词后的字符串,单词之间的空格需与原文一致。
样例输入
hello world
样例输出
olleh dlrow
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<stdio.h>
#include<iostream>
#include<stack>
#include<cstring>
#include<string>
using namespace std;
int main()
{
string str;
getline(cin, str);//变相的输入方式,能将空格列为输入的一部分
str += " ";//有些题可以尝试这么加,避免最后一个单词由于没跟空格导致的未处理
int len = str.size();//取len作为你所输的字符串的长度
stack<char> q;
int sum = 0;//已经输出的单词数,用来确定空格的输出
for (int i = 0; i < len; i++)//遍历你所输的字符串
{
if (str[i] != ' ')//不等于空格则压栈,压完一个完整的单词
{
q.push(str[i]);
}
else
{
//检测到空格,再检测单词数,进行出栈和空格的输出
if (sum != 0) cout << " ";
while (!q.empty())//当栈里还有东西
{
cout << q.top();//输出栈顶
q.pop();//弹出栈顶
}
sum++;//单词++
}
}
return 0;
}