C++-STL(17)-string-逆序

1."dog loves pig " -> “pig loves dog"
思路:1.整体逆序
           2.每个单词再逆回来。
coding: 1. reverse(str.begin(),str.end())
              2.str.substr(m_start, strspan);//起始位置,n个数
              3.按空格取单词时,左右坐标的初始值为-1
      

// 按空格取出单词
if (str[i] != ' ')
{
  left =( i == 0 || str[i - 1] == ' ') ? i : left;                      //  " "在left 前
  right = (i == str.length() - 1 || str[i + 1] == ' ' )? i : right;     // " " 在right后
}

上代码:
 

string  myRotateWord(string str)
{
	if (str == "")
	{
		return " ";
	}
	string strre;
	reverse(str.begin(), str.end());//1.整体逆序
//	cout<<"整体逆序的结果"<<str<<endl;
   	int left = -1;                   //一个单词的左右坐标 初始值-1  
	int right = -1;
	for (int i = 0; i < str.length(); i++) //遍历字符串 取单个字符,并逆序
	{
	
		// 按空格取出单词
		if (str[i] != ' ')
		{
			left =( i == 0 || str[i - 1] == ' ') ? i : left;                      //  " "在left 前
			right = (i == str.length() - 1 || str[i + 1] == ' ' )? i : right;     // " " 在right后
		}
		if (left != -1 && right != -1)
		{
		    int strspan=right-left+1;
			int m_start=left;
			string strtemp = str.substr(m_start, strspan);//1.取得每个单词
			reverse(strtemp.begin(), strtemp.end());      //2.反转每个单词
			strre.append(strtemp);                        //3.拼接每个单词
			strre.append(" ");                             //拼接时添加空格
			left = -1;                                    //左右坐标
			right = -1;
		}
		
	}

	return strre;
}




void main()
{
string str = "dog loves pig";
cout << myRotateWord(str) << endl;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值