42-反转单词顺序/左旋转字符串

本文介绍了一种使用C++实现的字符串处理方法,包括反转句子中单词的顺序和实现字符串的左旋操作。通过自定义函数而非依赖标准库函数,加深了对字符串操作底层原理的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写得好TM low 气死了

反转单词顺序

void ReverseWord(string &s, string::iterator pbegin, string::iterator pend)
{
         //reverse(pbegin, pend); //最简单的库函数
	if (pend - 1 == pbegin)
		return ;
	for (; pbegin != pend && pbegin != --pend; ++pbegin)
	{
		auto temp = *pbegin;
		*pbegin = *pend;
		*pend = temp;
	}
	
}
string ReverseSentence(string str)
{
    string::iterator  s = str.begin();
	while (s != str.end()&&*s!=' ')
	 {	
			s++;
	 }
	if (s  == str.end())
		return str;
	ReverseWord(str, str.begin(), str.end());
	string::iterator  bbegin = str.begin();
	for (string::iterator  a = str.begin(); a < str.end(); a++)
	{
		
		if ((*a)==' ')
		{
			ReverseWord(str, bbegin, a);
			bbegin = a + 1;
		}
	}
    ReverseWord(str, bbegin, str.end());
	return str;

}

左旋转字符串:

也是用到了字符串的翻转;

string LeftRotateString(string str, int n)
{
	
	if (str.length() <= 1 || ((n = n%str.length()) <= 0))
		return str;
	ReverseWord(str, str.begin(), str.end());
    
	ReverseWord(str, str.begin(), str.end() - n);

	ReverseWord(str, str.end() - n, str.end());
	return str;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值