写得好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;
}