1009 说反话

在这里插入图片描述
这种反着输出的我就有点想用栈,但是呢又是一个一个单词反着输入而不是一个一个字母。一个字符串用空格做分隔符能有很明显的界限。开始想的是用一个字符串输入,然后遍历字符串,用一个数组存空格的位置,然后根据空格位置来控制每一个单词的输出。但是这种解法控制一个空格到另一个空格有点麻烦。要是用容器的话这个题就简单一些,也是实现数组的基本功能但用到vector的size的话对于输出来说就简单多了。

这是某个博主的代码,找不到链接了…
看注释应该能看懂

#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
	vector <string> s;
	string ss;
	getline(cin, ss);
	string t = "";                //赋值为空,t用于提取每一个单词,并不断更新
	for (int i = 0; i < ss.length(); i++)
	{
		if (ss[i] != ' ')           //ss可以直接做字符串数组使用
			t = t + ss[i];
		else
		{
			s.push_back(t);
			t = "";             //t赋值为空,等待更新
		}
	}
	s.push_back(t);        //因为最后一个单词后面没有空格所以要在push_back一次让size+1
	for (int i = s.size()-1 ; i >= 0; i--)         //因为vector下标从0开始所以要-1
	{
		if (i != 0)
			cout << s[i] << " ";
		else
			cout << s[i];
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值