Day8 翻转字符串里面的单词,右旋字符串

翻转字符串里面的单词

我觉得这道题是一道可以很好的帮助我们的理解再次关于快慢双指针,希望我们能够经过我们多次的锻炼来提高自己的水平!

题目

在知道题里面,我们要做的不仅仅是单纯的翻转字符我们还需要将这个空格整掉,但是在每一个单词与单词之间我们还要有一个空格,所以我们的第一步是先将这个空格全部删掉,然后利用reverse,然后再将每一个单词内部反转。

#include<iostream>
#include<algorithm>
using namespace std;
#include<string>
string zhauan(string& s,int start,int end)
{
	for (int i =start,j=end; i < j; i++, j--)//这个地方千万别写错了,否则会影响下面的
	{
		swap(s[i], s[j]);
	}
	return s;
}
string shankong(string &s)
{
	int slow = 0;
	for (int fast = 0; fast < s.size(); fast++)
	{
		if (s[fast] != ' ')
		{
			if (slow != 0)s[slow++] = ' ';
			while (fast < s.size() && s[fast] != ' ')
			{
				s[slow] = s[fast];
				slow++;
				fast++;
			}
		}
	}
	s.resize(slow);//这个地方的语法重点看一眼
	return s;
}
string  fanzhuan(string &s)
{
	shankong(s);
	//s.reserve(s.begin(),s.end());
	zhauan(s,0,s.size()-1);
	//cout << s << endl;
	int start = 0;
	for (int i = 0; i < s.size(); i++)
	{
		if (s[i] != ' '||i==s.size()-1)//这个地方的判断条件别少了
		{
			zhauan(s, start, i-1);
			start = i + 1;
		}
	}
	return s;
}
int main()
{
	string s;
	getline(cin, s);
	cout<<fanzhuan(s);
}

右旋字符串

 

#include<iostream>
using namespace std;
#include<string>
#include<algorithm>
int main()
{
	int n;
	cin >> n;
	string s;
	cin >> s;
	reverse(s.begin(), s.end());
	reverse(s.begin(), s.begin() + n );
	reverse(s.begin() + n, s.end());
	cout << s;

}

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值