题:倒置字符串

题:

将一句话的单词进行倒置,标点不倒置。比如 I like beijing. ,经过函数后变为:beijing. like I

也就是将一段话句子倒置,句子中每个单词倒置,,标点不倒置。


解题思路:

看到倒置二字,首先想到的是 String类 中reverse函数,能够简单快捷的倒置字符串,同时通过递归调用,每个单词也使用reverse函数 来倒置,从而实现单词的倒置,完成题目要求。


代码实例: 

#include <iostream> 
#include <string> 
#include <algorithm>
using namespace std; 


int main() {    
	string s;

	//1.输入字符串
	getline(cin, s);

	//2.句子倒置
	reverse(s.begin(), s.end());

	//3.单词倒置
	//倒置的判断条件:1.单词开始等于最后    2.遇到空格
	auto start = s.begin();

	//关键:找到单词的end
	while (start!=s.end()) {
		auto end = start;
		while (end!=s.end()&& *end!=' ') {
			end++;   //找到end
			
		}
		reverse(start, end);  //反转一个单词了

		//移动start,再次继续倒置第二个
		if (end!=s.end()) {
			start = end + 1;
		}
		else {
			start = end;
		}
	}

	//4.打印倒置后的字符串
	cout << s << endl;

	system("pause");
	return 0; 
}

知识点总结:

  1. String类的使用——begin(),end(),reverse()函数
  2. 注意:end(),begin(),代表的是指针,代码中判定空格时候:*end != ' ',可见end();begin() 是指针
  3. 输入有空格字符串 getline() 函数的使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值