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;
}